【问题标题】:Java Android - Redmi 3 (MIUI) - Notification icons cannot be changed?Java Android - Redmi 3 (MIUI) - 通知图标无法更改?
【发布时间】:2016-10-20 05:23:10
【问题描述】:

我正在尝试更改通知图标,在模拟器中可以:

这就是我想要的(在模拟器 API 级别 22(Android 5.1.1)上测试)但是,当我在我的真实手机(带有 MIUI 8.0.1 的小米红米 3 Prime)上运行这个应用程序时也是 android 5.1。 1 - 通知看起来非常非常不同。此通知图标不显示(只是一个默认应用程序图标)。

但是……为什么?我现在能做什么?

这是我的代码:

NotificationCompat.Builder b = new NotificationCompat.Builder(compat);
        b.setSmallIcon((state == STATE_STOPPED) ? R.drawable.ic_stat_remove : R.drawable.check);
        b.setContentText(content);
        b.setContentTitle(BASE_NOTIFICATION_TITLE);
        b.setOngoing(true);
        b.setAutoCancel(true);
        b.setColor((state == STATE_STOPPED) ? Color.RED : Color.rgb(22, 219, 28));

        NotificationManager m = (NotificationManager) compat.getSystemService(NOTIFICATION_SERVICE);
        m.notify(0, b.build());

只是一个非常简单的通知...有人可以告诉我,有什么问题吗?或者只是 MIUI 关闭所有通知图标并将其设置为默认应用启动图标?

谢谢!

编辑:我手机中的通知看起来像这样......

【问题讨论】:

    标签: java android notifications


    【解决方案1】:

    我遇到了同样的问题,但 Juan Pablo(评论 Java Android - Redmi 3 (MIUI) - Notification icons cannot be changed?)给了我一个线索,现在我有了一个解决方案:

    //notification is an object of class android.app.Notification
        try {
            Class miuiNotificationClass = Class.forName("android.app.MiuiNotification");
            Object miuiNotification = miuiNotificationClass.newInstance();
            Field field = miuiNotification.getClass().getDeclaredField("customizedIcon");
            field.setAccessible(true);
    
            field.set(miuiNotification, true);
            field = notification.getClass().getField("extraNotification");
            field.setAccessible(true);
    
            field.set(notification, miuiNotification);
        } catch (Exception e) {
    
        }
    

    现在它可以按预期工作了。

    【讨论】:

    • @sikor 是否有关于所有可用的android.app.MiuiNotification 方法和字段的文档?
    • @jkasten 我还没有找到。我花了一些时间搜索这方面的东西,我发现的只是:bkjia.com/Androidjc/1119525.html
    • @sikor 很棒的发现。它必须被标记为正确答案。
    • 哥们,你救了我的命
    【解决方案2】:

    这是 MIUI 系统的行为。通知中不能显示不同的图标,默认将应用图标作为通知图标。

    【讨论】:

    • 一年前发生在我身上。你能接受这个答案吗,如果有人知道MIUI。
    • 小米红米Note 3也有同样的“怪胎”问题。通过调试发现Notification里面有一个MiUiNotification类型的ExtraNotification字段,里面有一个flag:customizedIcon=错误的。也许如果改变这个标志,那么可以显示一个个性化的图标。
    • @JuanPablo 关于自定义布局有类似的东西吗?这些似乎也没有正确显示。
    • @Mark 以防万一你感兴趣 - setCustomContentView() 和 setCustomBigContentView() 对我来说适用于 MIUI,NotificationCompat.Builder 和 targetSdkVersion 28 完全没有问题
    • @Mark 不幸的是,Google Play 控制台不提供有关 MIUI 版本的信息。为了修复状态栏图标的错误,我与使用 Redmi 4X 和 Redmi Note 5A 的客户合作,两者都使用原始 MIUI 启动器。他们使用我的自定义布局提供屏幕通知内容,并且看起来符合预期。
    猜你喜欢
    • 2020-03-02
    • 1970-01-01
    • 2016-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-22
    • 2017-04-11
    • 1970-01-01
    相关资源
    最近更新 更多