2013-03-12 53 views
2

我想製作一個可以添加的應用程序,查看&取消鬧鐘。我爲此設計了一個數據庫。完美地查看和創建新的鬧鐘。如何用特定的request_code取消特定的pendingIntent?

但問題是取消報警。所有報警設置與pendingIntent相同,使用不同的request_coderequest_code取自數據庫條目(即ID字段)。如果我使用cancel(pendingIntent)方法,它將取消所有報警。但我只想取消具體的request_code的具體報警。這裏是我創建報警代碼:

Calendar cal = Calendar.getInstance(); 
cal.set(Calendar.HOUR_OF_DAY, hour); 
cal.set(Calendar.MINUTE, minute); 
cal.set(Calendar.SECOND, 0); 
Intent intent = new Intent(this, d1_on.class); 
PendingIntent pendingIntent = PendingIntent.getActivity(this, user_id, intent, PendingIntent.FLAG_UPDATE_CURRENT); 
AlarmManager am = (AlarmManager)getSystemService(Activity.ALARM_SERVICE); 
am.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent); 

現在,當我點擊取消按鈕,會要求您user_id。然後它會從數據庫中刪除該行。沒關係......但現在我想停止request_code設置爲user_id的特定鬧鐘。

或請向我解釋如何通過alarmReceiver類取消在alarmActivity類中創建的pendingIntent類。

回答

3

重建pendingIntent就像你最初創建

PendingIntent pendingIntent = PendingIntent.getActivity(this, user_id, intent, PendingIntent.FLAG_UPDATE_CURRENT); 

那麼你就可以

am.cancel(pendingIntent); 
取消