安卓通知在棉花糖系统中未显示彩色图标

7

我正在制作一个应用程序,其中我从Parse获取数据并将该数据传输到通知中以生成并向用户显示。

但出于某种原因,在Marshmallow中我无法显示正确的彩色图标。

在其他所有Android版本中都非常正常,但在Marshmallow中,它是可怕的白色图标而不是我选择的实际图标。

这是我的通知代码。

 Intent cIntent = new Intent(context, MainActivity.class);
        PendingIntent pendingIntent = PendingIntent.getActivity(context, 0,
                cIntent, PendingIntent.FLAG_UPDATE_CURRENT);

        NotificationCompat.Builder builder = new NotificationCompat.Builder(context)
                .setSmallIcon(R.drawable.ic_launcher)
                .setContentText(data)
                .setContentTitle("Notification from Parse")
                .setContentIntent(pendingIntent);

        Notification notification = builder.build();
        NotificationManager nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
        nm.notify(100, notification);

请帮我解决这个问题,或者告诉我其他方法来解决它。

2个回答

20

第一:这不是从Marshmallow开始的,自Lollipop起通知图标就开始变成白色。

请查看http://developer.android.com/design/style/iconography.html,您将看到白色风格是Android Lollipop中应该显示通知的方式。

在Android Lollipop中,Google还建议您使用将显示在(白色)通知图标后面的颜色 - https://developer.android.com/about/versions/lollipop/android-5.0-changes

第二:解决方案是将LargeIcon设置为通知构建器。

Bitmap largeIcon = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);

NotificationCompat.Builder builder = new NotificationCompat.Builder(context)
                .setSmallIcon(R.drawable.ic_launcher)
                .setLargeIcon(largeIcon)
                .setContentText(data)
                .setContentTitle("Notification from Parse")
                .setContentIntent(pendingIntent);

那么,你的通知将会长成这个样子:

setLargeIcon

你也可以使用.setColor()来设置通知图标的背景颜色。


你太棒了,它正在运行。 - user5340656
但是右下角还有一个小图标,有没有办法去掉它? - user5340656
2
不行,因为当你的手机被锁定并出现通知时,该图标实际上会显示在你的通知中。 - Vipul Asri
好的,但是我的老板希望看到像 Twitter 和 Facebook 那样带有它们自己图标的通知。所以他们希望我也能做到这一点,你能帮我吗? - user5340656
2
在Facebook和Twitter中,它们根据各自的主题颜色应用了setColor,其中Facebook为深蓝色,Twitter为浅蓝色。它们没有使用setLargeIcon - Vipul Asri
哦,我明白了。非常感谢你,你太棒了。 再次非常感谢你。 #尊重 - user5340656

0
在某些型号上(如Pixel等),您只能添加一种颜色,只需添加以下内容: .setColor(ContextCompat.getColor(context, R.color.your_color))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接