tutorial - android: se publicó una notificación incorrecta: no se pudieron expandir las RemoteViews para: StatusBarNotification
progress notification android (11)
Estoy tratando de publicar una notificación con vista personalizada en el área de notificación de un servicio de intendencia, y obtener el error ''No se pudo expandir RemoteView''.
Esto es lo que estoy haciendo en onCreate ():
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;
Llamo a notify () desde OnHandleIntent () y cancelo las notificaciones en OnDestroy ().
He verificado que este código funciona en una aplicación independiente, que no tiene un servicio de intención. Hacer esto en un IntentService de alguna manera causa problemas.
¿Podría alguien explicar por favor qué es lo que estoy haciendo mal?
¡Gracias!
Bueno, el error se debió a la excepción ResourceNotFound. Recibí el mensaje "No se pudo inflar la vista para la notificación".
Seguí cavando, y siguiendo los consejos here solucioné mi problema. Cambié el nombre de drawable-mdpi a dibujable.
Y, después de asegurarme de que el código funcionaba, cambié el nombre de la carpeta a drawable-mdpi. Las cosas siguen funcionando, haciéndome creer que un ''Proyecto Limpio'' seguido de Build habría solucionado el problema.
Espero que esto ayude.
En general, este error significa que su contentView es un error, ¡compruébelo! quizás sea mejor que reemplace su contenido con un diseño que solo contenga TextView.Ok, ejecútelo, espero que lo ayude.
En mi caso, la excepción fue causada por una View
normal en mi diseño de notificación personalizada. Básicamente, se debe a que solo puedes usar ciertos widgets como TextView, ImageView, etc.
En mi caso, pude solucionar este error reduciendo el tamaño del icono que estaba proporcionando en .setSmallIcon();
Estaba enfrentando el mismo problema al mostrar el diseño personalizado en la notificación y lo que encontré es:
Estaba usando RestraintsLayout como un diseño de raíz de mi notificación personalizada, este es el error que estaba cometiendo. Como hay algunas limitaciones con el diseño de restricciones para ser utilizado en Android.
Finalmente cambié mi diseño de raíz a RelativeLayout y mi notificación se muestra perfectamente. He adjuntado mi vista en la captura de pantalla siguiente.
Obtuve el mismo error, pero el problema para mí fue el diseño de restricción. Lo cambié a Relative Layout
para solucionar el problema.
Para mí, el problema era que estaba configurando una altura específica para el diseño de la raíz, en el archivo xml de la 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 de la raíz de la vista de notificación, el problema fue resuelto.
También eche un vistazo a este ejemplo para ver un ejemplo simple de uso de diseño personalizado para notificaciones.
Para mí, el problema era tener un elemento View
en el diseño personalizado establecido para la notificación personalizada. La eliminación del elemento View
del diseño resolvió el problema de la notificación incorrecta publicada.
Aquí hay una lista de elementos de diseño que pueden usarse, si desea crear una notificación personalizada usando RemoteView
.
Ni el proyecto de limpieza ni la configuración de layout_height
como match_parent
funcionaron para mí.
Tenga cuidado cuando use Vector drawables. En los dispositivos pre-Lollipop que configuran un ícono a través de los métodos NotificationCompat.Builder
, como setSmallIcon
, causará este bloqueo. Obtendrá el mismo bloqueo si usa Vector drawables en su vista personalizada.
Yo tuve el mismo problema. En mi caso:
reason -> Utilicé para la función builder.setAction (R.drawable.icon, ...) un vectordrawable e intenté también habilitarlos desde la librería de soporte pero nada funcionó. En los sistemas Android recientes, no veo iconos de acción, en los otros muestra este error.
solución -> No encontré nada, la única solución para mí es evitar los archivos .xml para dibujar y usar los archivos .png en todos los directorios hdpi mdpi ldpi ..
por razones desconocidas, no está permitido hacer referencia a la dimensión en la vista raíz de la vista remota personalizada. entonces tienes que codificarlo 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 :)