#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()
. Документация
Чтобы проверить, была ли изменена важность канала уведомлений:
- Для API 26 до API 28 используйте
NotificationChannel.getImportance()
, чтобы узнать, изменилась ли важность канала уведомления. Обратите внимание, что важность канала не может быть изменена программно после создания канала. Документация - Для API 29 и выше используйте
NotificationChannel.hasUserSetImportance()
. Документация
Комментарии:
1. @pokoso обновили ответ соответствующей информацией
2. Почему вы проверяете, высока ли важность?? Какое значение вы устанавливаете для канала? Если пользователь отключает канал, тогда важность
IMPORTANCE_NONE
. Если пользователь отключает канал, а затем включает его, важность будетIMPORTANCE_LOW
3. Я снова обновил ответ. Пожалуйста, прочтите его еще раз. Извините за беспокойство.
4. Спасибо за вашу помощь, я нашел решение для создания нового канала и нового идентификатора канала. 🙂