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.
надеюсь, вы получили это!