Mon application génère une notification, mais l'icône que j'ai définie pour cette notification ne s'affiche pas. Au lieu de cela, j'obtiens un carré blanc.
J'ai essayé de redimensionner le png de l'icône (dimensions 720x720, 66x66, 44x44, 22x22). Curieusement, lorsque vous utilisez des dimensions plus petites, le carré blanc est plus petit.
J'ai recherché ce problème sur Google, ainsi que la manière correcte de générer des notifications, et d'après ce que j'ai lu, mon code devrait être correct. Malheureusement, les choses ne sont pas comme elles devraient être.
Mon téléphone est un Nexus 5 avec Android 5.1.1. Le problème est également présent sur les émulateurs, un Samsung Galaxy s4 avec Android 5.0.1 et un Motorola Moto G avec Android 5.0.1 (que j'ai emprunté et que je n'ai pas pour le moment)
Le code des notifications suit et deux captures d'écran. Si vous avez besoin de plus d'informations, n'hésitez pas à les demander.
Merci à tous.
@SuppressLint("NewApi") private void sendNotification(String msg, String title, String link, Bundle bundle) {
NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
Intent resultIntent = new Intent(getApplicationContext(), MainActivity.class);
resultIntent.putExtras(bundle);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
resultIntent, Intent.FLAG_ACTIVITY_NEW_TASK);
Notification notification;
Uri sound = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.notificationsound);
notification = new Notification.Builder(this)
.setSmallIcon(R.drawable.lg_logo)
.setContentTitle(title)
.setStyle(new Notification.BigTextStyle().bigText(msg))
.setAutoCancel(true)
.setContentText(msg)
.setContentIntent(contentIntent)
.setSound(sound)
.build();
notificationManager.notify(0, notification);
}
la source
Réponses:
Cause: Pour 5.0 Lollipop "Les icônes de notification doivent être entièrement blanches".
Solution pour la cible Sdk 21
Si vous souhaitez prendre en charge les icônes de matériau Lollipop, créez des icônes transparentes pour Lollipop et la version supérieure. Veuillez vous référer à ce qui suit: https://design.google.com/icons/
Veuillez consulter http://developer.android.com/design/style/iconography.html , et nous verrons que le style blanc est la façon dont les notifications sont censées être affichées dans Android Lollipop.
Dans Lollipop, Google suggère également d'utiliser une couleur qui sera affichée derrière l'icône de notification blanche. Reportez-vous au lien: https://developer.android.com/about/versions/android-5.0-changes.html
Partout où nous voulons ajouter des couleurs https://developer.android.com/reference/android/support/v4/app/NotificationCompat.Builder.html#setColor(int)
La mise en œuvre de Notification Builder pour la version inférieure et supérieure du système d'exploitation Lollipop serait:
Remarque: setColor n'est disponible que dans Lollipop et n'affecte que l'arrière-plan de l'icône.
Cela résoudra complètement votre problème !!
la source
Si vous utilisez Google Cloud Messaging, ce problème ne sera pas résolu en modifiant simplement votre icône. Par exemple, cela ne fonctionnera pas:
Même si ic_notification est transparent et blanc. Il doit également être défini dans les métadonnées du manifeste, comme ceci:
Les méta-données passent sous l'
application
étiquette, pour référence.la source
res/drawable/ic_notification.png
de taille 196x196?Meta-data
suggestion de balise.Je suggère vraiment de suivre les directives de conception de Google :
qui dit "Les icônes de notification doivent être entièrement blanches."
la source
Déclarez ce code dans le manifeste Android:
J'espère que cela vous sera utile.
la source
ic_stat_name
? S'agit-il d'un png? est-ce beaucoup? aidez s'il vous plaît!(Android Studio 3.5) Si vous utilisez une version récente d'Android Studio, vous pouvez générer vos images de notification. Faites un clic droit sur votre dossier res > Nouveau> Image Asset . Vous verrez alors Configurer les éléments d'image comme indiqué dans l'image ci-dessous. Changer le type d'icône en icônes de notification . Vos images doivent être blanches et transparentes. Cette configuration des ressources d'image appliquera cette règle. Important: si vous souhaitez que les icônes soient utilisées pour les notifications cloud / push, vous devez ajouter les métadonnées sous votre balise d'application pour utiliser les icônes de notification nouvellement créées.
la source
On peut faire comme ci-dessous:
Créez un nouvel objet de générateur de notification et appelez à l'
setSmallIcon()
aide de l'objet générateur de notification comme dans le code ci-dessous.Créez une méthode dans laquelle nous vérifierons sur quelle version du système d'exploitation nous installons notre application. S'il est inférieur à Lolipop, c'est-à-dire API 21, il prendra l'icône d'application normale avec la couleur d'arrière-plan, sinon l'icône d'application transparente sans arrière-plan. Ainsi, les appareils utilisant la version os> = 21 définiront la couleur d'arrière-plan de l'icône en utilisant la méthode
setColor()
de la classe de générateur de notification.Exemple de code:
la source
setColor
sur Kitkat (API 19) et IceCreamSandwich (API 15), dans les deux cas, il a ignoré la couleur mais ne s'est pas écrasé . Alors, puis-je en toute sécurité omettre de vérifier la version du système d'exploitation?Essaye ça
J'étais confronté au même problème, j'ai essayé beaucoup de réponses mais je n'ai obtenu aucune solution, j'ai finalement trouvé le moyen de résoudre mon problème.
- créer une icône de notification avec un fond transparent.La largeur et la hauteur de l'application doivent être comme ci-dessous et collez tout cela dans votre projet-> app-> src-> main-> res
MDPI 24 * 24
HDPI 36 * 36
XHDPI 48 * 48
XXHDPI 72 * 72
après ce qui précède, collez cette ligne ci-dessous dans votre méthode onMessageReceived
N'oubliez pas d'ajouter ce code dans le fichier manifeste
la source
ajoutez cette ligne dans le fichier manifest.xml dans le bloc d'application
la source
Si vous souhaitez fournir une icône de notification de support de sucette, créez deux icônes de notification de type:
Maintenant, définissez l'icône appropriée sur le générateur de notification au moment de l'exécution sur la version du système d'exploitation:
la source
Enfin, j'ai la solution à ce problème.
Ce problème se produit uniquement lorsque l'application n'est pas du tout en cours d'exécution. (ni en arrière-plan ni au premier plan) . Lorsque l' application s'exécute au premier plan ou en arrière-plan, l'icône de notification s'affiche correctement (pas le carré blanc).
Donc, ce que nous devons définir est la même configuration pour l'icône de notification dans les API backend que celle de Frontend.
Dans le frontend, nous avons utilisé React Native et pour la notification push, nous avons utilisé le package npm react-native-fcm .
Nous avons utilisé le package npm fcm-push en utilisant Node.js comme backend pour la notification push et avons défini la structure de la charge utile comme suit.
Ce qu'il recherche essentiellement pour l'image notification_icon stockée localement dans notre système Android.
la source
Les notifications sont en niveaux de gris comme expliqué ci-dessous. Ils ne sont pas en noir et blanc, malgré ce que d'autres ont écrit. Vous avez probablement vu des icônes avec plusieurs nuances, comme des barres de puissance du réseau.
Avant l'API 21 (Lollipop 5.0), les icônes de couleur fonctionnent. Vous pouvez forcer votre application à cibler l'API 20, mais cela limite les fonctionnalités disponibles pour votre application, ce n'est donc pas recommandé. Vous pouvez tester le niveau d'API en cours d'exécution et définir une icône de couleur ou une icône en niveaux de gris de manière appropriée, mais cela ne vaut probablement pas la peine. Dans la plupart des cas, il est préférable d'utiliser une icône en niveaux de gris.
Les images ont quatre canaux, RGBA (rouge / vert / bleu / alpha). Pour les icônes de notification, Android ignore les canaux R, G et B. Le seul canal qui compte est Alpha, également appelé opacité. Concevez votre icône avec un éditeur qui vous permet de contrôler la valeur alpha de vos couleurs de dessin.
Comment les valeurs alpha génèrent une image en niveaux de gris:
Changer avec
setColor
:Appelez
NotificationCompat.Builder.setColor(int argb)
. De la documentation pourNotification.color
:Mes tests avec setColor montrent que les composants Alpha ne sont pas ignorés. Des valeurs alpha plus élevées rendent un pixel blanc. Les valeurs alpha inférieures transforment un pixel en couleur d'arrière-plan (noir sur mon appareil) dans la zone de notification ou en couleur spécifiée dans la notification déroulante.
la source
J'ai résolu le problème en ajoutant le code ci-dessous au manifeste,
où
ic_stat_name
créé sur Android Studio Cliquez avec le bouton droit sur res >> Nouveau >> Éléments d'image >> IconType (Notification)Et une étape de plus que je dois faire côté serveur php avec la charge utile de notification
Notez la section
où le nom de l'icône
"icon" => "ic_stat_name"
doit être le même que celui du manifeste.la source
Conditions requises pour résoudre ce problème:
Format d'image: PNG 32 bits (avec alpha)
L'image doit être transparente
Indice de couleur des transparents: blanc (FFFFFF)
Source: http://gr1350.blogspot.com/2017/01/problem-with-setsmallicon.html
la source
J'ai trouvé un lien où nous pouvons générer notre propre icône blanche,
Ouvrez ce lien et téléchargez votre ic_launcher ou l'icône de notification
la source
Vous pouvez utiliser différentes icônes pour différentes versions. Définissez simplement la logique sur votre icône comme ceci:
la source
Pour SDK> = 23, veuillez ajouter setLargeIcon
la source
Pour réduire les versions spécifiques du SDK, vous pouvez simplement faire ceci: (remplacez '#' par '0x')
la source
0xFF169AB9
, il vous manque le canal alpha totalement opaque.Lorsque vous souhaitez conserver une icône colorée - Solution de contournement
Ajoutez un pixel de couleur légèrement différente dans l'icône.
Dans mon cas, une icône noire avec des nuances et de la lumière. Lorsqu'il est ajouté pixel bleu foncé, cela fonctionne.
la source
J'ai un problème similaire sur Android 8.0. Essayez d'utiliser la ressource icône BLANCHE. J'ai un carré blanc lorsque j'essaie d'utiliser une image colorée pour l'icône, lorsque je la remplace par une icône blanche, le travail commence.
la source