我推出的应用程序进入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.不幸的是,我不认为你可以做任何事情.