Повторять локальные уведомления автоматически?
Так что мне удалось создать локальное уведомление в Android. Часть кода приведена ниже.
AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(),alarmManager.INTERVAL_DAY,pendingIntent);
Теперь нет проблем с созданием уведомления. Дело в том, что я сейчас тестирую его нажатием кнопки, которая запускает все уведомления с уведомлением, появляющимся каждый день в одно и то же время. Но, тем не менее, я не хочу добавлять кнопку для пользователей, чтобы нажимать ее, поэтому мне придется удалить кнопку и просто запускать этот код инициирования тревоги каждый раз, когда пользователь запускает приложение (в главном классе onCreate), просто чтобы убедиться, что что уведомления активированы. Тем не менее, мне кажется неуместным устанавливать один и тот же будильник снова и снова, так как одного времени будет достаточно. Это на самом деле вызывает какие-либо проблемы делать это постоянно? Или есть какой-нибудь способ получить текущий активированный ALARM SERVICE? (как?). Я думал об использовании общих настроек для однократной активации, но Сервис может быть остановлен в это время и больше не будет уведомлений. Что вы предлагаете в таком сценарии? Я видел некоторые другие сообщения с почти таким же вопросом, но это не относится к моей.
1 ответ
"Есть ли какой-нибудь способ получить текущую активированную СЛУЖБУ ТРЕВОГИ? (как?)" Короче говоря, нет, вы не можете напрямую с Android (вы можете сделать это с помощью оболочки, отлаживая ИЛИ, если вы рутировали свое устройство, в это дело да).
НО, хорошие новости: сигнал тревоги полностью определяется его ожидающим намерением, следовательно, тем же самым ожидающим намерением, тем же самым сигналом. Что вы можете сделать, так это вызывать свою тревогу каждый раз, когда вы открываете основное действие с тем же ожидаемым намерением EXACT. на данный момент у вас есть 2 выбора относительно флага намерения pendin: вы можете использовать PendingIntent.FLAG_CANCEL_CURRENT или PendingIntent.FLAG_UPDATE_CURRENT.
Первый будет запущен с сигналом тревоги и, если уже есть соответствующее соответствующее ожидающее намерение, уже зарегистрированное, просто ничего не сделает (отменит запрос, оставив текущий)
Второй будет запущен с сигналом тревоги и, если уже зарегистрировано соответствующее соответствующее намерение, обновит текущий сигнал тревоги и не будет добавлять тонну сигналов каждый раз, когда вы открываете свое приложение.
Лично второй всегда делал свою работу за меня
(см. https://developer.android.com/reference/android/app/PendingIntent.html)