Уведомление о предупреждении Android не отображается после отключения и включения его в настройках приложения

#android #notifications #heads-up-notifications

#Android #уведомления #предупреждения-уведомления

Вопрос:

Я создал уведомление о предупреждении в своем приложении, и оно работает хорошо.
Но когда я отключаю -> включаю его в настройках уведомлений моего приложения, я больше не вижу уведомления о предупреждении.
(Оно по-прежнему отображается на панели уведомлений, издает звук и вибрацию, но не при оповещении)

— В сообщении logcat говорится.

  • перед отключением / включением
    showForNotification: isInteractive = true, isHeadUp = true, color = 0, sbn = StatusBarNotification…

  • после отключения / включения его
    показывается подтверждение: isInteractive = true, isHeadUp = false, color = 0, sbn = StatusBarNotification…

Эта проблема не устраняется при завершении работы приложения и перезапуске.
Снова работает нормально только при удалении и переустановке приложения.

Есть ли какой-либо способ решить это?

Спасибо за ваше время.


Отредактировано

Я обнаружил ту же проблему в примере кода
https://github.com/googlearchive/android-Notifications

В этом приложении установите стиль уведомления на BIG_PICTURE_STYLE и нажмите кнопку запуска. затем вы можете увидеть уведомление о предупреждении, но после того, как настройки уведомлений «Пример социальных сетей» отключены -> включены в настройках уведомлений приложения, вы больше не сможете видеть уведомление о предупреждении.

Комментарии:

1. у вас есть Xiaomi?

2. @KKKKK нет, я использую Samsung Galaxy 10

3. попробуйте сделать: настройки -> уведомления -> область уведомлений -> и включить Android (который в то же время отключает miui)

4. У меня была похожая проблема с вами, и я сделал это на своем xiaomi redmi note 7, и это работает, я надеюсь, что это сработает и для вас

5. @KKKKK спасибо за комментарий, но я думаю, что на моем телефоне нет параметров настройки, которые вы упомянули. и я должен найти решение программно.

Ответ №1:

Это ожидаемое поведение. Когда пользователь блокирует уведомления для определенного канала уведомлений в настройках уведомлений, важность этого канала уведомлений уменьшается. Из-за чего баннер уведомления не будет отображаться в верхней части устройства. Пользователю придется вручную установить соответствующие настройки для канала уведомлений.

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

Если по какой-либо причине вам абсолютно необходимо уведомление для правильного функционирования приложения, вы можете определить, отключил ли пользователь уведомления или изменилась важность канала уведомлений, и попросить пользователя изменить его. Проверьте это

Если по какой-либо причине вам необходимо принудительно поддерживать настройки уведомлений, вы можете удалить каналы уведомлений и воссоздать их с соответствующей важностью.

Примечание: Если вы удалите канал уведомлений и создадите новый канал с тем же идентификатором, удаленный канал будет удален со всеми теми же настройками, которые у него были до его удаления. Таким образом, вам необходимо создать канал с новым идентификатором.

Чтобы проверить, заблокированы ли уведомления для приложения, используйте NotificationManager.areNotificationsEnabled() . Документация

Чтобы проверить, заблокированы ли уведомления для группы каналов уведомлений, используйте NotificationChannelGroup.isBlocked() . Документация

Чтобы проверить, была ли изменена важность канала уведомлений:

  1. Для API 26 до API 28 используйте NotificationChannel.getImportance() , чтобы узнать, изменилась ли важность канала уведомления. Обратите внимание, что важность канала не может быть изменена программно после создания канала. Документация
  2. Для API 29 и выше используйте NotificationChannel.hasUserSetImportance() . Документация

Комментарии:

1. @pokoso обновили ответ соответствующей информацией

2. Почему вы проверяете, высока ли важность?? Какое значение вы устанавливаете для канала? Если пользователь отключает канал, тогда важность IMPORTANCE_NONE . Если пользователь отключает канал, а затем включает его, важность будет IMPORTANCE_LOW

3. Я снова обновил ответ. Пожалуйста, прочтите его еще раз. Извините за беспокойство.

4. Спасибо за вашу помощь, я нашел решение для создания нового канала и нового идентификатора канала. 🙂