2

我想制作一个可以添加、查看和取消警报的应用程序。我为此设计了一个数据库。查看和创建新警报完美无缺。

但问题是取消警报。所有警报均由相同设置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);

现在,当我单击 CANCEL 按钮时,它会要求user_id. 然后它将从数据库中删除该行。没关系...但现在我想通过request_code设置为 user_id 来停止该特定警报。

或者请向我解释如何通过课堂取消pendingIntent在课堂上创建的。alarmActivityalarmReceiver

4

1 回答 1

3

重新创建pendingIntent就像您最初创建它一样

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

然后你可以取消它

am.cancel(pendingIntent);
于 2013-03-12T17:55:54.367 回答