Java Android – Redmi 3 (MIUI) – Значки уведомлений не могут быть изменены?

Я пытаюсь изменить значки уведомлений, а в эмуляторе все в порядке:

Введите описание изображения здесь

Введите описание изображения здесь

Введите описание изображения здесь

Введите описание изображения здесь

Это то, что я хочу (тестировался на уровне API-эмулятора 22 (android 5.1.1)). НО, когда я запускаю этот APP на своем реальном телефоне (Xiaomi Redmi 3 prime с MIUI 8.0.1), также 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 отключает все значки уведомлений и устанавливает его в значки запуска приложения по умолчанию?

Благодаря!

EDIT: уведомление в моем телефоне выглядит так …

Введите описание изображения здесь Введите описание изображения здесь

Это поведение системы MIUI. Вы не можете отображать разные значки в уведомлении, по умолчанию значок приложения отображается как значок уведомления.

У меня была та же проблема, но Хуан Пабло (в комментарии Java Android – Redmi 3 (MIUI) – Значки уведомлений не могут быть изменены? ) Дал мне ключ, и теперь у меня есть решение:

 //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) { } 

Теперь он работает так, как ожидается.