始终在所有Android设备上显示通知

时间:2017-05-29 15:12:00

标签: android android-notifications android-remoteview

我需要显示带有文字,图片和两个按钮的通知。 我正在使用支持库中的NotificationCompat,一切都很好,直到我开始在不同的设备上测试它。

以下是3种不同设备上的相同通知:

Screenshots of 3 different devices

这里有一些问题:

设备1(Nexus 5,6.0):消息文本丢失,图像被裁剪 设备2(仿真器,7.0):图像被严重裁剪
设备3(小米mi5s,6.0):消息文本丢失,动作文本为黑色,几乎不可见

我能够重现的其他缺陷:白色背景上的白色动作图标;图像未显示(三星galaxy s8 plus,android 7.0);动作按钮未显示。

最后,两个最大的问题是:通知的某些部分没有显示,动作图标或动作文本的背景颜色几乎相同。

以下是显示通知的代码:

    NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
    builder.setContentTitle("Test title");
    builder.setContentText("Test notification text description");
    builder.setAutoCancel(true);
    builder.setSmallIcon(R.drawable.ic_launcher);
    builder.setSound(Settings.System.DEFAULT_NOTIFICATION_URI);
    builder.setContentIntent(pendingIntentContent);

    NotificationCompat.Style style;
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN && image != null) {
        style = new NotificationCompat.BigPictureStyle().bigPicture(image);
        builder.setStyle(style);
    }

    builder.addAction(R.drawable.ic_share_vector, "SHARE", pendingIntentShare);

    if(pendingIntentBookMark != null){
        builder.addAction(R.drawable.ic_bookmark, "SAVE", pendingIntentBookMark);
    }
    return builder.build();

我正在考虑使用自己的布局,但我找不到理解设备主要颜色的方法。有些设备在黑色背景上使用白色通知,有些设备在黑色背景上使用黑色通知,依此类推。如果使用不同的颜色,通知将显得陌生。

我知道我可以将这些问题归咎于特定的设备,但我仍然需要我的通知几乎可以在任何地方工作并且看起来或多或少一致(没有隐藏文本或缺少元素等重大故障)。

有没有办法设置操作按钮背景和文字颜色,以便它们始终可见?

有没有办法知道设备使用哪种颜色作为通知区域和通知背景?

我可以使用BigPictureStyle以外的东西吗?

我只是希望有人遇到同样的问题并找到任何解决方法。

0 个答案:

没有答案