0

Я пытаюсь отменить будильник с помощью AlarmManager.cancel(), но, видимо, он не работает. Я где-то читал, что должен использовать PendingIntent.FLAG_UPDATE_CURRENT, который, как видно из кода, является тем, что я использовал. При настройке будильника я хочу, чтобы программа автоматически настраивала будильник, используя код, а следовательно, и код ниже.Удалить сигнал тревоги с помощью AlarmManager.cancel() не работает

setAlarm Функция:

public void setAlarm(DateTime date, String message) { 
     Intent i = new Intent(AlarmClock.ACTION_SET_ALARM); 
     i.putExtra(AlarmClock.EXTRA_MESSAGE, message); 
     i.putExtra(AlarmClock.EXTRA_HOUR, date.getHourOfDay()); 
     i.putExtra(AlarmClock.EXTRA_MINUTES, date.getMinuteOfHour()); 
     i.putExtra(AlarmClock.EXTRA_SKIP_UI, true); 
     PendingIntent pendingIntent = PendingIntent.getActivity(appContext.getApplicationContext(), 0, i, PendingIntent.FLAG_UPDATE_CURRENT); 
     AlarmManager manager = (AlarmManager) appContext.getApplicationContext().getSystemService(Context.ALARM_SERVICE); 
     manager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), pendingIntent); 
     return; 
    } 

cancelAlarm Функция:

public void cancelAlarm(DateTime date, String message) { 
     Intent i = new Intent(AlarmClock.ACTION_SET_ALARM); 
     i.putExtra(AlarmClock.EXTRA_MESSAGE, message); 
     i.putExtra(AlarmClock.EXTRA_HOUR, date.getHourOfDay()); 
     i.putExtra(AlarmClock.EXTRA_MINUTES, date.getMinuteOfHour()); 
     i.putExtra(AlarmClock.EXTRA_SKIP_UI, true); 
     PendingIntent pendingIntent = PendingIntent.getActivity(appContext.getApplicationContext(), 0, i, PendingIntent.FLAG_UPDATE_CURRENT); 
     AlarmManager manager = (AlarmManager) appContext.getApplicationContext().getSystemService(Context.ALARM_SERVICE); 
     manager.cancel(pendingIntent); 
     return; 
    } 

Любые идеи? Я в конце своего ума. Заранее спасибо!

ответ

0

При установке будильника вы это делаете:

manager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), pendingIntent); 

Это устанавливает сигнал тревоги погаснет, на System.currentTimeMillis(), что сделает сигнал тревоги уйти немедленно. Ваш звонок для отмены будильника не работает, потому что к тому времени, когда вы отмените вызов, будильник уже отключился и больше не существует.

+0

имеет смысл, я дам ему еще один ход! Большое спасибо! –

Смежные вопросы