android notifications android-5.0-lollipop android-notification-bar

¿Por qué los iconos configurados con Notification.Builder.setSmallIcon en Android Lollipop se muestran como un cuadrado blanco?



notifications android-5.0-lollipop (8)

Tengo este codigo:

Notification notif; // Build notification Notification.Builder notifBuilder = new Notification.Builder(context); notifBuilder.setContentIntent(pendingIntent); notifBuilder.setContentTitle(title); notifBuilder.setSmallIcon(icon_resId); notifBuilder.setContentText(ne.getCaption()); notifBuilder.setDefaults(Notification.DEFAULT_ALL); notifBuilder.setAutoCancel(autocancel); notifBuilder.setWhen(System.currentTimeMillis()); notif = notifBuilder.build();

y funciona bien en Android 4.4.

Sin embargo, en Android 5.0, el icono que se muestra en la barra de estado es un cuadrado blanco. El icono que se muestra en el nuevo "cuerpo de notificación", que aparece cuando el dispositivo está bloqueado, es correcto.

En http://developer.android.com/reference/android/app/Notification.Builder.html , no veo nada nuevo sobre los iconos de notificación en el nivel 21 de API


Agregue esto en su manifiesto -

<meta-data android:name="com.google.firebase.messaging.default_notification_icon" android:resource="@drawable/ic_notification" />


Como se indica en Android 5.0 Cambios de comportamiento del sitio de Desarrolladores de Android en Notificaciones:

Las notificaciones se dibujan con texto oscuro sobre fondos blancos (o muy claros) para que coincidan con los nuevos widgets de diseño de materiales. Asegúrese de que todas sus notificaciones se vean bien con el nuevo esquema de color. Si sus notificaciones se ven mal, corríjalas:

Use setColor () para establecer un color de acento en un círculo detrás de la imagen de su icono. Actualizar o eliminar activos que involucran color. El sistema ignora todos los canales no alfa en los iconos de acción y en el icono de notificación principal. Debe suponer que estos iconos serán solo alfa. El sistema dibuja iconos de notificación en blanco e iconos de acción en gris oscuro.

http://developer.android.com/about/versions/android-5.0-changes.html .


Cualquiera que todavía esté mirando esto, la forma más simple de hacer que su icono se muestre correctamente es primero renderizándolo con Android Icon Studio aquí:

https://romannurik.github.io/AndroidAssetStudio/icons-notification.html

Descomprima los archivos del zip descargado en su proyecto / carpeta principal, para que se inserten en las carpetas drawable-xxxx relevantes.

Luego, para cambiar el color en la notificación, use algo como esto:

NotificationCompat.Builder builder = new NotificationCompat.Builder(context, CHANNEL_ID) .setSmallIcon(R.drawable.ic_notification_appicon) // <-- Icon from Android Icon Studio .setColor(context.getColor(R.color.holo_blue)) // <-- Set your preferred icon colour to appear in the notification dropdown list .setContentTitle("Title") .setContentText("Content") .setAutoCancel(true) .setCategory(NotificationCompat.CATEGORY_EVENT) .setDefaults(Notification.DEFAULT_ALL) .setPriority(NotificationCompat.PRIORITY_DEFAULT);


Duplicado: el ícono de la barra de notificaciones se vuelve blanco en Android 5 Lollipop

En un resumen:

Actualización de Android 5: https://developer.android.com/about/versions/android-5.0-changes.html Notificaciones -> Estilo de diseño de material

Actualizar o eliminar activos que involucran color. El sistema ignora todos los canales no alfa en los iconos de acción y en el icono de notificación principal. Debe suponer que estos iconos serán solo alfa. El sistema dibuja iconos de notificación en blanco e iconos de acción en gris oscuro.

Es posible establecer el color de fondo del icono pequeño usando (el valor predeterminado es gris):

Notification.Builder#setColor(int)


Elimine el android:targetSdkVersion="21" de manifest.xml . ¡funcionará!


En Android 5.0, el icono que se muestra en la barra de estado es un cuadrado blanco debido a 5.0 Lollipop "Los iconos de notificación deben ser completamente blancos" .

Puede encontrar fácilmente este tipo de iconos en el icono Material. Visita: https://material.io/icons/

Google también sugiere que usemos un color personalizado que se mostrará detrás del icono de notificación blanco usando el método setColor() .

Para obtener más información, visite: https://developer.android.com/about/versions/android-5.0-changes.html


He resuelto cambiar el tamaño del icono a 16x16 px y usar solo color blanco