删除警报

时间:2011-12-13 11:43:30

标签: android alarm

我有一个应用程序,允许设置多个警报,并且它每天重复这些警报,并且工作正常。 我的问题是当我删除一个设置为在凌晨12点被解雇的警报时,第二天它将在凌晨12点被解雇,即使它被删除了!有人知道问题可能在哪里吗?

我正在使用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);

我也是以同样的方式通知。我给每个通知提供了不同的请求代码。

任何人都知道为什么即使我删除它也会触发警报?

2 个答案:

答案 0 :(得分:3)

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);

答案 1 :(得分:0)

即使您使用的是不同的requestId值,AlarmManager cancel()方法也只会检查您指定的PendingIntent是否相等。但是,根据documentation,过滤器相等性不依赖于您的额外数据。所以你必须全部取消它们然后遍历你的数据库以将它们添加回去(跳过你要删除的那个)。