web-dev-qa-db-fra.com

NotificationCompat.Builder setLargeIcon () ne fonctionne pas?

Lorsque j'ajoute le code mNotificationBuilder.setLargeIcon(BitmapFactory.decodeResource( getResources(), R.drawable.ic_large_icon)); à ma notification, il cesse de fonctionner sans erreurs ni avertissements. Cela ne se produit que sur pré-Lollipop, sur Lollipop et au-delà, cela fonctionne très bien. Et avec "travaux", je veux dire que la notification apparaît.

Mon exemple de code:

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());

J'ai essayé de charger le Bitmap de différentes manières mais il continue d'échouer ... L'icône est 128x128 donc la taille ne devrait pas être un problème?

J'ai également essayé différents identifiants mais aucun ne résout le problème.

Je serais tellement reconnaissant de tout conseil, s'il vous plaît, toute poussée dans la bonne direction signifierait le monde pour moi.

MODIFIER 1 #

Cette notification est émise par un Service. Le service est actif et les impressions de journaux m'indiquent que le code après l'exécution de "startForeground ()".

17

Vous devez d'abord définir une grande icône puis une petite icône.

dans mon cas, ce code fonctionne:

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

Avant Lolipop, il n'y avait pas de grande icône pour les notifications. La petite icône doit être 64x64 et lors de sa création, gardez à l'esprit qu'elle sera rendue en deux couleurs: blanc et transparent.

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)
                ;

}

3
Darko