Я создал повторяющийся будильник, который гаснет каждую минуту. Я создал класс с 2 статическими функциями для запуска и отмены тревоги. Я сделал это, чтобы начать и отменить его из нескольких мест. Запуск аварийной сигнализации работает нормально, но отмена - нет. Контекст, который я использую при вызове startAlarm
и cancelAlarm
, - getApplicationContext()
. Я думаю, что это может быть проблемой с контекстом, но я не уверен. Есть идеи?Отмена повторной тревоги в Android
Это мой класс
public class Alarm {
public static PendingIntent pendingIntent;
public static AlarmManager manager;
public static Intent alarmIntent;
public static void startAlarm(Context context) {
Log.e("ALARM", "------------STARTED----------------");
alarmIntent = new Intent((context), AlarmReceiver.class);
alarmIntent.setAction("NOTIFICATION_ALARM");
pendingIntent = PendingIntent.getBroadcast(context, 0, alarmIntent, 0);
manager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
int alarmType = AlarmManager.RTC_WAKEUP;
Calendar cal = Calendar.getInstance();
long intervalTime = 1 * 60 * 1000;
manager.setRepeating(alarmType, cal.getTimeInMillis(), intervalTime, pendingIntent);
}
public static void cancelAlarm(Context context) {
alarmIntent = new Intent(context, AlarmReceiver.class);
pendingIntent = PendingIntent.getBroadcast(context, 0, alarmIntent, 0);
manager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
if (manager != null) {
Log.e("ALARM", "------------STOPPED----------------");
manager.cancel(pendingIntent);
}
}
}
am.cancel (pendingIntent); –
Ваше намерение в ожидании, которое вы отменяете, должно соответствовать тому, которое вы использовали для настройки будильника. То есть вам нужно вызвать 'alarmIntent.setAction (" NOTIFICATION_ALARM ");' в методе 'cancelAlarm()'. –
@ Джейсон Ли положить ваш журнал ошибок пожалуйста. –