首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除告警

删除告警
EN

Stack Overflow用户
提问于 2011-12-13 19:43:30
回答 2查看 2.5K关注 0票数 1

我有一个允许设置多个警报的应用程序,它每天都会重复这些警报,并且工作得很好。我的问题是我删除了一个设定在凌晨12:00触发的闹钟。第二天凌晨12点就会被删除了!有人知道问题出在哪里吗?

我正在使用SQLite来存储、检索和删除警报。

这是AlarmManager的一部分,我给每个警报一个不同的请求代码:

代码语言:javascript
复制
 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);

对于通知,我也是这样做的。我给每个通知一个不同的请求代码。

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-13 19:59:52

AlarmManager上调用cancel()

代码语言:javascript
复制
Intent intent = new Intent(this, AlarmReceive.class);
PendingIntent sender = PendingIntent.getBroadcast(this,
               0, intent, 0);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);

alarmManager.cancel(sender);
票数 3
EN

Stack Overflow用户

发布于 2012-08-11 21:33:30

即使您使用的是不同的requestId值,AlarmManager cancel()方法也只检查您指定的PendingIntent是否相等。然而,根据documentation,过滤器相等性并不依赖于额外的数据。因此,您必须将它们全部取消,然后在数据库中循环以重新添加它们(跳过您要删除的一个或多个)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8488634

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档