Android – Notificación incorrecta publicada – No se pudo expandir RemoteViews para: StatusBarNotification
Estoy tratando de publicar una notificación con vista personalizada en el área de notificación de un IntentService, y obtener el error 'No podría expant RemoteView'.
Esto es lo que estoy haciendo en onCreate ():
- ¿Cómo utilizar PendingIntent para comunicarse desde un servicio a un cliente / actividad?
- Si android reinicia un servicio es onCreate llamado de nuevo?
- START_STICKY y START_NOT_STICKY
- ¿Cómo ejecutar el servicio no en el hilo principal?
- El servicio exportado no requiere permiso: ¿qué significa?
mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); icon = R.drawable.icon; tickerText = "data upload in progress"; contentView = new RemoteViews(getApplicationContext().getPackageName(), R.layout.notiflayout); contentView.setImageViewResource(R.id.image, R.drawable.icon); contentView.setTextViewText(R.id.text, "Hello"); contentView.setProgressBar(R.id.progressBar, 100, 10, false); whatNext = PendingIntent.getActivity(getApplicationContext(), 0, new Intent(getApplicationContext(), starterActivity.class), 0); notification = new Notification(icon, tickerText, System.currentTimeMillis()); notification.contentView = contentView; notification.contentIntent = whatNext;
Estoy llamando notify () de OnHandleIntent (), y cancelando las notificaciones en OnDestroy ().
He verificado que este código funciona en una aplicación independiente, que no tiene un IntentService. Hacer esto en un IntentService es de alguna manera dar problemas.
¿Podría alguien explicar por favor qué es lo que estoy haciendo mal?
¡Gracias!
- Utilizando IntentService para la reproducción de MediaPlayer
- Establecer un Listener en una clase basada en servicio
- Cómo supervisar el cambio de estado de SIM
- Servicio que no se está creando (o que se conecta) después de bindService ()
- ¿Cómo ejecuto un método de servicio periódicamente?
- Android onServiceConnected () se llama en un hilo separado?
- ¿Cómo funcionan las aplicaciones de Android, como Facebook, WhatsApp, en primer plano sin notificación?
- ¿Está garantizado un servicio android para llamar a onDestroy ()?
Bueno, el error se debió a la excepción ResourceNotFound. Estaba recibiendo el mensaje "no podía inflar la vista para la notificación".
Seguí cavando, y siguiendo el consejo aquí arregló mi problema. Renombrado drawable-mdpi a drawable.
Y, después de asegurarse de que el código funcionó, cambié el nombre de la carpeta de nuevo a drawable-mdpi. Las cosas siguen funcionando, haciéndome creer que un 'Clean Project' seguido de Build habría arreglado el problema.
Espero que esto ayude.
Para mí, el problema era que estaba estableciendo una altura específica para el diseño de raíz, en el archivo xml de vista de notificación personalizada.
Tan pronto como cambié:
Android: layout_height = "@ dimen / notification_expanded"
a
Android: layout_height = "match_parent"
En el diseño raíz de la vista de notificación, se resolvió el problema.
También eche un vistazo a este ejemplo para ver un ejemplo sencillo de uso de diseño personalizado para las notificaciones.
En mi caso, la excepción fue causada por una View
regular en mi diseño de notificaciones personalizadas. Básicamente, es porque se le permite usar sólo ciertos widgets como TextView, ImageView y así sucesivamente.
Por razones desconocidas no se le permite referenciar la dimensión en la vista de raíz de la vista remota personalizada. Así que tienes que codificarlo duro como android:layout_height="64dp"
pero si android:layout_height="@dimen/notification_height_that_64"
te dará una Bad notification posted - Couldn't expand RemoteViews for: StatusBarNotification
. Espero que esto sea de ayuda 🙂
En mi caso, pude corregir este error reduciendo el tamaño del icono que estaba proporcionando en .setSmallIcon();
Para mí, el problema era tener un elemento View
en el conjunto de diseño personalizado para la notificación personalizada. La eliminación del elemento View
del diseño resolvió el problema de la notificación incorrecta publicada.
Esta es una lista de elementos de diseño que se pueden utilizar, si desea crear una notificación personalizada mediante RemoteView
.
Ni el proyecto de limpieza ni el ajuste del layout_height
como match_parent
funcionaron para mí.
Generalmente, este error significa que su contenido es un error, ¡compruébelo! Tal vez es mejor reemplazar su contenido con un diseño que contenga un TextView only.Ok, ejecutarlo, espero que la ayuda para usted.
- Datos fuera de sincronización entre un CursorLoader personalizado y un CursorAdapter respaldando un ListView
- ¿Qué significa COLLATE LOCALIZED ASC?