Уведомления в Android Oreo - PullRequest
       98

Уведомления в Android Oreo

0 голосов
/ 18 октября 2018

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

В моем приложении я использую AlarmManager для запуска уведомления в определенный момент.Он отлично работает в Nougat и ниже, однако он никогда не срабатывает при тестировании на Oreo (и, предположим, не будет работать и на Pie).

Я пробовал все виды вещей, например, setExactAndAllowWhileIdle,Что, по мнению других пользователей, должно работать на Oreo, но у меня это не сработало.Я также узнал о WorkManager, однако люди рекомендовали не использовать его в производственных приложениях, поскольку он все еще находится в бета-версии и, по-видимому, также не рекомендуется, если вам нужно запустить задачу в действительно определенное время.

Я бы показал мойкод, однако, это просто AlarmManager с BroadcastReceiver, как и любой другой пример, который вы можете найти в Интернете.

Это действительно приложение, ломающее «ошибку» для меня, и на данный момент я неЗнать, что делать.Благодарю.

РЕДАКТИРОВАТЬ : AlarmManager работает в Android Oreo и выше, проблема была с уведомлениями.Начиная с Oreo, вам нужно настроить NotificationChannel, иначе уведомления никогда не появятся.Вот и все.

Ответы [ 2 ]

0 голосов
/ 18 октября 2018

Попробуйте, это может сработать.Я также столкнулся с той же проблемой, что и ваша, и этот код отлично работает для меня.

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
    alarmManager.setAlarmClock(new AlarmManager.AlarmClockInfo(d.getTime(), pendingIntent), pendingIntent);
else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
    alarmManager.setExact(AlarmManager.RTC, d.getTime(), pendingIntent);
else
    alarmManager.set(AlarmManager.RTC, d.getTime(), pendingIntent);

Метод setAlarmClock () работает в большинстве случаев.Даже если устройство находится в режиме Doze Mode , этот метод будет работать.

Подробнее о методе setAlarmClock() можно узнать из здесь .

0 голосов
/ 18 октября 2018

Ключевым моментом является то, что вы должны использовать явные трансляции в случае Oreo.

Обсуждение с решением .

Документация .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...