2014-10-04 136 views
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

有意義,我會再給它一次!非常感謝你! – 2014-10-28 11:14:29