Хоча майже всі тут давали правильну відповідь, жоден орган не пояснив, на якій основі працюють тривожні сигнали
Дізнатися більше про AlarmManager
її роботу можна тут . Але ось швидка відповідь
Ви бачите в AlarmManager
основному графіки PendingIntent
на деякий час у майбутньому. Тож для скасування запланованої тривоги вам потрібно скасувати PendingIntent
.
Завжди зберігайте на увазі дві речі під час створення PendingIntent
PendingIntent.getBroadcast(context,REQUEST_CODE,intent, PendingIntent.FLAG_UPDATE_CURRENT);
- Код запиту - діє як унікальний ідентифікатор
- Прапор - визначає поведінку
PendingIntent
Тепер, щоб перевірити, чи тривогу вже заплановано, або скасувати сигнал тривоги, вам просто потрібно отримати доступ до того ж PendingIntent
. Це можна зробити, якщо ви використовуєте той же код запиту і використовуєте, FLAG_NO_CREATE
як показано нижче
PendingIntent pendingIntent=PendingIntent.getBroadcast(this,REQUEST_CODE,intent,PendingIntent.FLAG_NO_CREATE);
if (pendingIntent!=null)
alarmManager.cancel(pendingIntent);
З FLAG_NO_CREATE
ним повернеться, null
якщо цього PendingIntent
ще не існує. Якщо він вже існує, він повертає посилання на існуючеPendingIntent