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.

Надеюсь, вы получили это!