如何使用特定的request_code取消特定的pendingIntent?

时间:2013-03-12 17:32:38

标签: android alarmmanager android-pendingintent

我想制作一款可以添加,观看和播放的应用取消警报。我为此设计了一个数据库。查看和创建新警报非常有效。

但问题是取消警报。所有警报都由具有不同pendingIntent的{​​{1}}设置。 request_code取自数据库条目(即ID字段)。如果我使用request_code方法,它将取消所有警报。但我只想取消具体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设置为user_id的情况下停止该特定警报。

或者,请向我解释如何通过request_code课程取消pendingIntent课程中创建的alarmActivity

1 个答案:

答案 0 :(得分:3)

按照您最初创建的方式重新创建pendingIntent

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

然后你可以用

取消它
am.cancel(pendingIntent);