android – 不好的数组长度,通知管理器导致电话崩溃4.4

前端之家收集整理的这篇文章主要介绍了android – 不好的数组长度,通知管理器导致电话崩溃4.4前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我推出的应用程序进入BETA测试和多个用户4.4设备报告说,该应用程序导致整个手机崩溃,即使应用程序甚至没有这样的权限,应用程序启动后手机几乎重新启动.

来自测试人员的报告如下:

java.lang.RuntimeException: bad array lengths
at android.os.Parcel.readIntArray(Parcel.java:820)
at android.app.INotificationManager$Stub$Proxy.enqueueNotificationWithTag(INotificationManager.java:348)
at android.app.NotificationManager.notify(NotificationManager.java:139)
at android.app.NotificationManager.notify(NotificationManager.java:112)
at als.wakeup.Awake_Alarm$MyLocationListener.onLocationChanged(Awake_Alarm.java:272)
at android.location.LocationManager$ListenerTransport._handleMessage(LocationManager.java:279)
at android.location.LocationManager$ListenerTransport.access$000(LocationManager.java:208)
at android.location.LocationManager$ListenerTransport$1.handleMessage(LocationManager.java:224)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:157)
at android.app.ActivityThread.main(ActivityThread.java:5293)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
at dalvik.system.NativeStart.main(Native Method)

这可以在4.2,4.3中正常工作,但似乎Galaxy Note 3和Galaxy S5运行4.4重新启动.

原因是什么?它是应用程序相关的还是可能在新的操作系统中出现故障?

刚刚发现,它在Xperia Z1上工作正常,4.4,没有崩溃.似乎只有三星呢这样做,有什么提示

通知创建功能

public Notification CreateNotification(double distance){


    Intent notificationIntentStop = new Intent(this.getApplicationContext(),StopService.class);
    PendingIntent contentIntentStop = PendingIntent.getActivity(this.getApplicationContext(),notificationIntentStop,0);


    Bitmap largeIcon = BitmapFactory.decodeResource(getResources(),R.drawable.logo);
    Shortcuts shorts = new Shortcuts(this);
    NotificationCompat.Builder mBuilder =
            new NotificationCompat.Builder(this)
            .setSmallIcon(R.drawable.logo)
            .setContentTitle("Localarm Running")
            .setLargeIcon(largeIcon);
    //mBuilder.addAction(R.drawable.ico,"Stop",contentIntentStop);
    if(distance > 0){
    mBuilder.setContentText(String.valueOf(roundTwoDecimals(shorts.ConvertUnits(distance))+" "+shorts.GetUnitNames(distance)+" to Alarm."));
    }
    else{
    mBuilder.setContentText(String.valueOf("You've reached your destination"));
    }
    mBuilder.setPriority(Notification.PRIORITY_MAX);
    Notification bui = mBuilder.build();

    bui.flags|= Notification.FLAG_NO_CLEAR;
        Intent notificationIntent = new Intent(this.getApplicationContext(),Intro.class);
        PendingIntent contentIntent = PendingIntent.getActivity(this.getApplicationContext(),notificationIntent,0);
        bui.contentIntent = contentIntent;



    return bui;

}

它被调用:onLocationChanged()

NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);        
    notificationManager.notify(0,CreateNotification(dist_difference-alert_range));

解决方法

这是一个 issue in Android.不幸的是,我不认为你可以做任何事情.

猜你在找的Android相关文章