不能使用黄色与Android Nougat通知的小图标

时间:2016-11-29 23:31:29

标签: android notifications google-cloud-messaging

我在Android 7.x中将通知小图标设置为黄色时出现问题

我在构建通知对象时使用notification.setColor(Color.YELLOW);。它显示橄榄色(ish)颜色而不是黄色。

还试图使用notification.setColor(Color.argb(255,255,255,0));但没有运气,它显示了相同的橄榄色(ish)颜色。

这就是Android 7.x中的样子

Android 7.1

这就是Android 6.x中的样子,它是正确的颜色

Android 6.x

两个图片都使用相同的代码库显示相同的通知,但使用不同的Android设备。

我使用PushWoosh发送/接收推送通知,下面是我用来创建通知对象的确切代码。

public class NotificationFactory extends AbsNotificationFactory {
@Override
public Notification onGenerateNotification(PushData pushData) {
    PushwooshUserdata pushwooshUserdata = GsonUtil.fromJson(pushData.getExtras().getString("u"), PushwooshUserdata.class);

    //create notification builder
    NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(getContext());
    notificationBuilder.setContentTitle("Header");
    notificationBuilder.setContentText("Message");

    //set small icon (usually app icon)
    notificationBuilder.setSmallIcon(R.drawable.notification_icon);
    notificationBuilder.setColor(Color.argb(255,255,255,0));

    //set ticket text
    notificationBuilder.setTicker(getContentFromHtml(pushData.getTicker()));

    //display notification now
    notificationBuilder.setWhen(System.currentTimeMillis());

    //build the notification
    final Notification notification = notificationBuilder.build();

    //add sound
    addSound(notification, pushData.getSound());

    //add vibration
    addVibration(notification, pushData.getVibration());

    //make it cancelable
    addCancel(notification);

    //all done!
    return notification;
}

@Override
public void onPushReceived(PushData pushData) {
}

@Override
public void onPushHandle(Activity activity) {
}
}

2 个答案:

答案 0 :(得分:8)

Android确保前景色和背景色之间的对比度最小。

黄色(#ffff35)前景和白色背景,对比度仅为1.07:1。

橄榄色前景(#717d13)的最小对比度为4.5:1。

这是Android来源中的相关补丁:https://android.googlesource.com/platform/frameworks/base.git/+/4ff3b120ff8a788e3afeb266d18caf072f0b8ffb%5E%21/

我使用http://webaim.org/resources/contrastchecker/计算了上述对比度。

答案 1 :(得分:0)

尝试确保应用中Activity中的通知中的UI控件也可用,并且当用户单击通知时,您应始终启动该活动。为此,请使用setContentIntent()方法。

如果您在colors.xml中定义了颜色,那么在NotificationBuilder中将值添加为.setColor(getResources().getColor(R.color.<YOUR_COLOR>))

来源:NotificationCompat.Builder#setColor(int)