我的应用程序生成通知,但我为该通知设置的图标没有显示。相反,我得到一个白色方块。
我尝试调整图标的 png 大小(尺寸 720x720、66x66、44x44、22x22)。奇怪的是,当使用较小的尺寸时,白色方块会更小。
我已经用谷歌搜索了这个问题,以及生成通知的正确方法,从我读过的内容来看,我的代码应该是正确的。可悲的是,事情并非如此。
我的手机是装有 Android 5.1.1 的 Nexus 5。这个问题也出现在模拟器上,一个带有 Android 5.0.1 的三星 Galaxy s4 和一个带有 Android 5.0.1 的摩托罗拉 Moto G(我都借了,现在没有)
通知代码如下,以及两个屏幕截图。如果您需要更多信息,请随时询问。
谢谢你们。
@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);
}
原文由 Blueriver 发布,翻译遵循 CC BY-SA 4.0 许可协议
原因:对于 5.0 Lollipop,“通知图标必须全白”。
目标 SDK 21 的解决方案
如果要支持 Lollipop Material Icons,请为 Lollipop 及以上版本制作透明图标。请参考以下内容: https ://design.google.com/icons/
请查看 http://developer.android.com/design/style/iconography.html ,我们将看到白色样式是通知在 Android Lollipop 中的显示方式。
在 Lollipop 中,Google 还建议我们使用一种将显示在白色通知图标后面的颜色。参考链接: https ://developer.android.com/about/versions/android-5.0-changes.html
无论我们想在哪里添加颜色 https://developer.android.com/reference/android/support/v4/app/NotificationCompat.Builder.html#setColor(int)
低于和高于 Lollipop OS 版本的 Notification Builder 的实现将是:
注意: setColor 仅在 Lollipop 中可用,它只影响图标的背景。
彻底解决你的问题!!