Android AlarmManager: есть ли способ отменить все установленные сигналы тревоги?

Я создаю приложение, которое устанавливает 2 тревоги для каждого дня недели (в определенный час и минуту), сигналы тревоги повторяются неделю за неделей навсегда.

теперь дело в том: если пользователь изменяет сигналы тревоги, мне нужно будет отменить ранее установленные сигналы тревоги.

есть ли способ просто отменить все сигналы тревоги, установленные моим приложением ?

2 ответов


Я думаю, вы могли бы получить глаз на:AlarmManager.Отмена

и на этот вопрос/ответ: Android: получить все PendingIntents набор с AlarmManager

Как указано там, вы не можете попросить AlarmManager сообщить вам, что в нем находится PendingIntent. Но я думаю, вы можете сделать какой-то PendingIntent похожим на тот, который вы хотите отменить ;).


Если вы отменяете предыдущие сигналы тревоги, то в 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.

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