我有一个允许设置多个警报的应用程序,它每天都会重复这些警报,并且工作得很好。我的问题是我删除了一个设定在凌晨12:00触发的闹钟。第二天凌晨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);对于通知,我也是这样做的。我给每个通知一个不同的请求代码。
有人知道为什么即使我删除了警报也会触发吗?
发布于 2011-12-13 19:59:52
在AlarmManager上调用cancel()
Intent intent = new Intent(this, AlarmReceive.class);
PendingIntent sender = PendingIntent.getBroadcast(this,
0, intent, 0);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.cancel(sender);发布于 2012-08-11 21:33:30
即使您使用的是不同的requestId值,AlarmManager cancel()方法也只检查您指定的PendingIntent是否相等。然而,根据documentation,过滤器相等性并不依赖于额外的数据。因此,您必须将它们全部取消,然后在数据库中循环以重新添加它们(跳过您要删除的一个或多个)。
https://stackoverflow.com/questions/8488634
复制相似问题