2011-12-13 144 views
1

我有一個應用程序,允許設置多個鬧鐘,它每天重複這些鬧鐘,它工作正常。 我的問題是,當我刪除一個設置爲在凌晨12:00被解僱的鬧鐘時,即使它被刪除,它也會在12:00 a.m被解僱!任何人都知道問題出在哪裏?刪除鬧鐘

我正在使用SQLite來存儲,檢索和刪除警報。

這是AlarmManager我給每一個報警不同的請求的部分代碼:

Intent i = new Intent(mContext, Daily_OnAlarmReceiver.class); 
    i.putExtra(RemindersDbAdapter.KEY_ROWID_DAILY, (long)reminderId); 
    int Daily_requestCode = reminderId.intValue(); 

    PendingIntent pi = PendingIntent.getBroadcast(mContext, Daily_requestCode, i, PendingIntent.FLAG_CANCEL_CURRENT); 

    mAlarmManager.setRepeating(AlarmManager.RTC_WAKEUP, when.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pi); 

,我也做了通知一樣。我給每個通知一個不同的請求代碼。

任何人都知道即使我刪除它,爲什麼警報還在發射?

回答

4

呼叫cancel()AlarmManager

Intent intent = new Intent(this, AlarmReceive.class); 
PendingIntent sender = PendingIntent.getBroadcast(this, 
       0, intent, 0); 
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); 

alarmManager.cancel(sender); 
+0

感謝您回答我的問題。我嘗試過,但這會導致所有的警報不起火。如何僅爲已刪除的警報調用它? – zoza

0

即使您正在使用不同requestId值,該AlarmManagercancel()方法只檢查您指定的PendingIntent相等。但是,根據documentation,過濾器相等性不取決於您的額外數據。所以你必須全部取消它們,然後通過你的數據庫循環來添加它們(跳過你正在刪除的那個)。