studio android exception notifications

studio - java lang runtime exception android



Mala notificación publicada desde el paquete No se pudo expandir RemoteViews (3)

Tengo un problema. Algunas veces mi servicio se cierra con fuerza con este logcat:

03-26 20:44:44.849: E/AndroidRuntime(12080): FATAL EXCEPTION: main 03-26 20:44:44.849: E/AndroidRuntime(12080): android.app.RemoteServiceException: Bad notification posted from package by.flipdev.vkspy: Couldn''t expand RemoteViews for: StatusBarNotification(pkg=by.flipdev.vkspy id=1 tag=null score=0 notn=Notification(pri=0 contentView=by.flipdev.vkspy/0x1090071 vibrate=null sound=null defaults=0x0 flags=0x2 kind=[null])) 03-26 20:44:44.849: E/AndroidRuntime(12080): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1374) 03-26 20:44:44.849: E/AndroidRuntime(12080): at android.os.Handler.dispatchMessage(Handler.java:99) 03-26 20:44:44.849: E/AndroidRuntime(12080): at android.os.Looper.loop(Looper.java:137) 03-26 20:44:44.849: E/AndroidRuntime(12080): at android.app.ActivityThread.main(ActivityThread.java:4931) 03-26 20:44:44.849: E/AndroidRuntime(12080): at java.lang.reflect.Method.invokeNative(Native Method) 03-26 20:44:44.849: E/AndroidRuntime(12080): at java.lang.reflect.Method.invoke(Method.java:511) 03-26 20:44:44.849: E/AndroidRuntime(12080): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791) 03-26 20:44:44.849: E/AndroidRuntime(12080): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:558) 03-26 20:44:44.849: E/AndroidRuntime(12080): at dalvik.system.NativeStart.main(Native Method)

Este es mi código para agregar notificaciones de agregar:

protected void addNotification(final Bitmap Avatar, final int small_Image_ID, final int notify_id, final String text, final String title, final Boolean ongoing, final Boolean ticker, final String tickerText, final Boolean autoCancel, final String notificationCategory, final int notificationValue) { try { final Intent notificationIntent = new Intent( getApplicationContext(), CheckerActivity.class); notificationIntent .putExtra(notificationCategory, notificationValue); notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); final PendingIntent contentIntent = PendingIntent.getActivity( getApplicationContext(), notify_id, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT); final NotificationManager nm = (NotificationManager) context .getSystemService(Context.NOTIFICATION_SERVICE); final NotificationCompat.Builder builder = new NotificationCompat.Builder( context); if (Ticker) { builder.setContentIntent(contentIntent) .setSmallIcon(small_Image_ID) .setOngoing(ongoing) .setLargeIcon(Avatar).setTicker(tickerText) .setWhen(System.currentTimeMillis()) .setAutoCancel(AutoCancel).setContentTitle(title) .setContentText(text); // Текст уведомления } else { builder.setContentIntent(contentIntent) .setSmallIcon(small_Image_ID) .setLargeIcon(avatar) .setOngoing(ongoing) .setWhen(System.currentTimeMillis()) .setAutoCancel(AutoCancel).setContentTitle(title) .setContentText(text); // Текст уведомления } final Notification n = builder.getNotification(); nm.notify(notify_id, n); } catch (final Exception e) { // TODO: add exception handling code } }

¿Por qué mi servicio es asesinado?


Este problema es el resultado de recursos faltantes o nulos. Mirando su código, deduzco que, el posible error parece estar en Ticker (siempre falso) y setLargeIcon(avatar) (el avatar siempre es nulo) .

¿Podría publicar todas sus implementaciones de servicios?

PD Por favor, trate de respetar la convención de nombres de Java; Ticker, Avatar, AutoCancel y otros objetos deben comenzar con minúsculas.


Noté que esto sucedía en los emuladores 3.0 , cuando configuré el ícono grande.

Entonces, dado que el ícono grande solo lo usan los dispositivos 4.0+ , resolví este problema comprobando si la versión de compilación es> 13. Si es así (y solo si es así), configuro el ícono Grande.

El problema se ha ido.


Bueno, en mi caso, estaba obteniendo exactamente el mismo error porque me refería a una definición de estilo para un TextView en mi diseño de notificación personalizado que tenía una entrada para un método de destino onClick. Específicamente:

<item name="android:onClick">onClick</item>

Una vez que eliminé esa línea, el problema desapareció. Un descuido de mi parte, pero un buen recordatorio de no reutilizar ciegamente los estilos.