Pregunta NotificationCompat.Builder setLargeIcon () no funciona?


Cuando agrego el código mNotificationBuilder.setLargeIcon(BitmapFactory.decodeResource( getResources(), R.drawable.ic_large_icon)); a mi notificación, deja de funcionar sin errores ni advertencias. Esto solo ocurre en pre-Lollipop, en Lollipop y más allá. Funciona muy bien. Y con "trabajos" quiero decir que aparece la notificación.

Mi código de muestra:

NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this);

mBuilder.setSmallIcon(R.drawable.icon);
mBuilder.setContentTitle("Content Title");
mBuilder.setContentText("Content Text");
mBuilder.setLargeIcon(BitmapFactory.decodeResource( getResources(), R.drawable.ic_large_icon));

startForeground(1, mBuilder.build());

He intentado cargar Bitmap de diferentes maneras pero sigue fallando ... El ícono es de 128x128, por lo que su tamaño no debería ser un problema.

También probé con diferentes identificadores, pero ninguno que resuelva el problema.

Estaría tan agradecido de cualquier consejo, por favor, cualquier impulso en la dirección correcta significaría mucho para mí.

EDITAR 1 #

Esta notificación se emite desde un Servicio. El servicio está activo y las impresiones de registro me dicen que se ejecuta el código después de "startForeground ()".


9
2018-03-04 15:17


origen


Respuestas:


Primero tiene que configurar un icono grande y luego un icono pequeño.

en mi caso este código está funcionando:

    mBuilder.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_message));
    mBuilder.setSmallIcon(R.mipmap.ic_message);
    mBuilder.setContentTitle("Inbox");
    mBuilder.setContentText("New message received");

14
2018-06-23 04:48



Antes de Lolipop no había un icono grande para las notificaciones. El icono pequeño debe tener 64x64 y al crearlo, tenga en cuenta que se representará en dos colores: blanco y transparente.

NotificationCompat.Builder mBuilder;

if (SystemTools.isAndroidApiVersionBeforeLollipop()) {
                mBuilder =
                        new NotificationCompat.Builder(context)
                                .setContentIntent(pendingIntent)
                                .setSmallIcon(iconRid)
                                .setColor(ContextCompat.getColor(context, R.color.transparent))
                                .setContentTitle(caption)
                                .setContentText(text)
                                .setOngoing(true)
                                .setWhen(0)
                                .setPriority(NotificationCompat.PRIORITY_LOW)
                ;
            } else {
                mBuilder =
                        new NotificationCompat.Builder(context)
                                .setContentIntent(pendingIntent)
                                .setSmallIcon(iconRid)
                                .setLargeIcon(BitmapFactory.decodeResource(context.getResources(), bigIconRid))
                                .setColor(ContextCompat.getColor(context, R.color.transparent))
                                .setContentTitle(caption)
                                .setContentText(text)
                                .setOngoing(true)
                                .setWhen(0)
                                .setPriority(NotificationCompat.PRIORITY_LOW)
                ;

}


2
2018-01-01 14:32



Preguntas populares