Android AlarmManager: есть ли способ отменить ВСЕ установленные тревоги?
Я создаю приложение, которое устанавливает 2 сигнала тревоги для каждого дня недели (через определенный час и минуту), тревоги повторяются неделя за неделей навсегда.
Теперь точка: если пользователь меняет сигналы тревоги, мне нужно отменить ранее установленные тревоги.
Есть ли способ просто отменить все тревоги, установленные моим приложением?
Ответы
Ответ 1
Я думаю, вы могли бы обратить внимание: AlarmManager.Cancel
И на этом вопрос/ответ: Android: установите все PendingIntents с помощью AlarmManager
Как указано в этом документе, вы не можете просить AlarmManager рассказать вам, что в нем находится PendingIntent. Но я думаю, вы можете сделать какой-то PendingIntent похожим на тот, который вы хотите отменить;).
Ответ 2
если вы отменяете предыдущие сигналы тревоги, то в PendingIntent
ваш флаг должен быть PendingIntent.FLAG_CANCEL_CURRENT
. Это предотвратит создание нового PendingIntent
если оно уже создано. И убедитесь, что перед установкой будильника просто отмените тот же PendingIntent
и после этого установите свой будильник. Вы должны попробовать вот так:
AlarmManager 2AlarmsInWeekAlarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
PendingIntent pendingIntent = PendingIntent.getService/getActivity(context, int, intent, PendingIntent.FLAG_CANCEL_CURRENT);
2AlarmsInWeekAlarmManager.cancel(pendingIntent);
и тогда вы можете использовать метод set или setRepeating
. В вашем случае это должно быть
2AlarmsInWeekAlarmManager.setRepeating(AlarmManager.RTC_WAKEUP, "timeInMillis", "repetitionTimeInMillis", pendingintent);
Это гарантирует, что перед установкой будильника будут PendingIntent
все предыдущие будильники с тем же PendingIntent
.
Надеюсь, вы получили это!