Почему функция «Не беспокоить» не активируется на устройствах Xiaomi?

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

NotificationManager myNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
myNotificationManager.setInterruptionFilter(NotificationManager.INTERRUPTION_FILTER_PRIORITY);

Он очень хорошо работает на всех устройствах, но по какой-то причине не работает на устройствах Xiaomi с Android 9. Режим «Не беспокоить» не активирован на этих устройствах. Он остается неизменным. Если я спрашиваю устройство, что является текущим прерыванием, оно отвечает значением 5. Это неизвестное и не задокументированное значение в Android Developer, как указано здесь.

int iCurrentInterruption = oNotificationManager.getCurrentInterruptionFilter();

iCurrentInterruption имеет значение 5. Ничего из следующего:

INTERRUPTION_FILTER_UNKNOWN = 0
INTERRUPTION_FILTER_ALL = 1
INTERRUPTION_FILTER_PRIORITY = 2
INTERRUPTION_FILTER_NONE = 3 
INTERRUPTION_FILTER_ALARMS = 4

person Ton    schedule 13.09.2019    source источник


Ответы (1)


Я предполагаю, что в устройствах Xiaomi Системе требуется больше времени для активации фильтра прерывания, поэтому вы не можете сразу запросить результат. Итак, я сплю на секунду и спрашиваю после этого. Также бывает, что иногда он не активируется в первый раз, поэтому мне приходится вызывать setInterruptionFilter во второй раз.

Что-то вроде этого:

setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
wait
If INTERRUPTION_FILTER_PRIORITY==getCurrentInterruptionFilter() then return OK
//Second try:
setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
wait
If INTERRUPTION_FILTER_PRIORITY==getCurrentInterruptionFilter() then return Ok
return error
person Ton    schedule 15.09.2019