No se puede usar amarillo con el pequeño icono de Notificación de Nougat de Android

Tengo un problema al configurar el icono de notificación pequeño como amarillo en Android 7.x

Estoy usando notification.setColor(Color.YELLOW); Mientras construye el objeto de notificación. Muestra que el color de la aceituna (ish) en vez del amarillo.

También intentó usar notification.setColor(Color.argb(255,255,255,0)); Pero no hay suerte, muestra el mismo color de la aceituna (ish).

Así es como se ve en Android 7.x

Android 7.1

Así es como se ve en Android 6.x, que es el color correcto

Android 6.x

Ambas imágenes muestran la misma notificación con la misma base de código, pero utilizando diferentes dispositivos Android.

Estoy utilizando PushWoosh para enviar / recibir notificaciones push, a continuación se muestra el código exacto que estoy usando para crear el objeto de notificación.

 public class NotificationFactory extends AbsNotificationFactory { @Override public Notification onGenerateNotification(PushData pushData) { PushwooshUserdata pushwooshUserdata = GsonUtil.fromJson(pushData.getExtras().getString("u"), PushwooshUserdata.class); //create notification builder NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(getContext()); notificationBuilder.setContentTitle("Header"); notificationBuilder.setContentText("Message"); //set small icon (usually app icon) notificationBuilder.setSmallIcon(R.drawable.notification_icon); notificationBuilder.setColor(Color.argb(255,255,255,0)); //set ticket text notificationBuilder.setTicker(getContentFromHtml(pushData.getTicker())); //display notification now notificationBuilder.setWhen(System.currentTimeMillis()); //build the notification final Notification notification = notificationBuilder.build(); //add sound addSound(notification, pushData.getSound()); //add vibration addVibration(notification, pushData.getVibration()); //make it cancelable addCancel(notification); //all done! return notification; } @Override public void onPushReceived(PushData pushData) { } @Override public void onPushHandle(Activity activity) { } } 

Android garantiza una relación de contraste mínima entre el color de primer plano y el color de fondo.

Con el amarillo (# ffff35) primer plano y un fondo blanco, la relación de contraste es sólo 1,07: 1.

El primer plano de oliva (# 717d13) tiene la relación de contraste mínima de 4.5: 1.

Este es el parche relevante en la fuente de Android: https://android.googlesource.com/platform/frameworks/base.git/+/4ff3b120ff8a788e3afeb266d18caf072f0b8ffb%5E%21/

Calculé las razones de contraste anteriores usando http://webaim.org/resources/contrastchecker/ .

Trate de asegurarse de que los controles de la interfaz de usuario en una notificación también están disponibles en una actividad de su aplicación y siempre debe iniciar esa actividad cuando los usuarios hacen clic en la notificación. Para ello, utilice el método setContentIntent () .

Si has definido el color en colors.xml y luego en tu NotificationBuilder agrega valor como .setColor(getResources().getColor(R.color.<YOUR_COLOR>))

Fuente: NotificationCompat.Builder#setColor(int)

  • Actualización de la barra de progreso de la descarga en el área de notificación de AsynTask
  • El ID de registro de la aplicación no se genera en GCM Android
  • enviar notificaciones push a varios dispositivos android usando GCM
  • Inicie correctamente la Actividad de la Notificación independientemente del estado de la aplicación
  • La notificación con setGroupSummary (true) no está visible en Android N
  • Ancho de notificación de Android
  • El sonido de notificación no se reproduce cuando la pantalla del dispositivo está bloqueada
  • NotificationCompat android - cómo mostrar solo el icono grande sin pequeño
  • Borrar notificación en la barra de estado después de que la aplicación se estrelló
  • Firebase que envía varias notificaciones push en lugar de apilar o reemplazar
  • Deshabilitar notificación de borrado para mi aplicación
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.