Android 删除警报

Android 删除警报,android,alarm,Android,Alarm,我有一个应用程序,允许设置多个警报,它每天重复这些警报,工作正常。 我的问题是,当我删除一个设置为在凌晨12:00触发的警报时,第二天它将在凌晨12:00触发,即使它被删除!有人知道问题出在哪里吗 我正在使用SQLite来存储、检索和删除报警 这是AlarmManager的一部分,我为每个报警提供不同的请求代码: Intent i = new Intent(mContext, Daily_OnAlarmReceiver.class); i.putExtra(RemindersDbAda

我有一个应用程序,允许设置多个警报,它每天重复这些警报,工作正常。 我的问题是,当我删除一个设置为在凌晨12:00触发的警报时,第二天它将在凌晨12:00触发,即使它被删除!有人知道问题出在哪里吗

我正在使用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);
我也在以同样的方式处理通知。我给每个通知一个不同的请求代码

有人知道即使我删除了报警,为什么会触发报警吗?

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

即使您使用的是不同的
requestId
值,
AlarmManager
cancel()
方法也只会检查您指定的
pendingent
是否相等。但是,筛选器相等性并不取决于您的额外数据。因此,您必须全部取消它们,然后在数据库中循环添加它们(跳过要删除的一个)。

谢谢您回答我的问题。我试过了,但这会导致所有的警报都不响。如何仅为已删除的报警调用它?