Android Push Notifications: Icon not displaying in notification, white square shown instead Android Push Notifications: Icon not displaying in notification, white square shown instead android android

Android Push Notifications: Icon not displaying in notification, white square shown instead


Cause: For 5.0 Lollipop "Notification icons must be entirely white".

If we solve the white icon problem by setting target SDK to 20, our appwill not target Android Lollipop, which means that we cannot useLollipop-specific features.

Solution for target Sdk 21

If you want to support Lollipop Material Icons, then make transparent icons for Lollipop and the above version. Please refer to the following:https://design.google.com/icons/

Please look at http://developer.android.com/design/style/iconography.html, and we'll see that the white style is how notifications are meant to be displayed in Android Lollipop.

In Lollipop, Google also suggests that we use a color that will be displayed behind the white notification icon. Refer to the link: https://developer.android.com/about/versions/android-5.0-changes.html

Wherever we want to add Colorshttps://developer.android.com/reference/android/support/v4/app/NotificationCompat.Builder.html#setColor(int)

Implementation of Notification Builder for below and above Lollipop OS version would be:

Notification notification = new NotificationCompat.Builder(this);if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {    notification.setSmallIcon(R.drawable.icon_transperent);    notification.setColor(getResources().getColor(R.color.notification_color));} else {     notification.setSmallIcon(R.drawable.icon);} 

Note: setColor is only available in Lollipop and it only affects the background of the icon.

It will solve your problem completely!!


If you are using Google Cloud Messaging, then this issue will not be solved by simply changing your icon. For example, this will not work:

 Notification notification  = new Notification.Builder(this)                .setContentTitle(title)                .setContentText(text)                .setSmallIcon(R.drawable.ic_notification)                .setContentIntent(pIntent)                .setDefaults(Notification.DEFAULT_SOUND|Notification.DEFAULT_LIGHTS|Notification.DEFAULT_VIBRATE)                .setAutoCancel(true)                .build();

Even if ic_notification is transparant and white. It must be also defined in the Manifest meta data, like so:

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

Meta-data goes under the application tag, for reference.


I really suggest following Google's Design Guidelines:

which says "Notification icons must be entirely white."