我刚接触android和java编程,我有一个可以触发多个警报并每天重复它们的应用程序。它工作得很好,但我的问题是,当我删除一个警报时,它会在第二天继续触发。他们告诉我使用cancel方法,我创建了这个函数:
public void deleteReminder(Long reminderId){
Intent d = new Intent(mContext, Daily_OnAlarmReceiver.class);
d.putExtra(RemindersDbAdapter.KEY_ROWID_DAILY, (long)reminderId);
int Daily_requestCode = reminderId.intValue();
PendingIntent pid = PendingIntent.getBroadcast(mContext, Daily_requestCode, d, PendingIntent.FLAG_CANCEL_CURRENT);
mAlarmManager.cancel(pid);
}我的设置提醒功能如下:
public void setReminder(Long reminderId, Calendar when) {
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);
}这两个文件都放在AlarmManager.java文件中。
下面的代码在另一个java文件中,它只从列表中删除警报,但不会阻止系统触发警报:
public boolean onContextItemSelected(MenuItem item) {
switch(item.getItemId()) {
case R.id.menu_delete:
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
mDbHelper.deleteDailyReminder(info.id);
fillData();
return true;
}
return super.onContextItemSelected(item);
}我的问题是如何在前面的代码中调用这个new Daily_ReminderManager(this).deleteReminder(mRowId);,这样提醒就会从列表和警报管理器中删除。
我想知道我的第一个代码是否正确
发布于 2011-12-14 02:34:37
要取消报警,Intents必须与filterEquals(..)定义的一致。
这意味着意图操作、数据、类型、类和类别必须相同。在此比较中不使用额外的数据。
https://stackoverflow.com/questions/8494193
复制相似问题