如何在警报管理器中清除以前的警报?

Posted

技术标签:

【中文标题】如何在警报管理器中清除以前的警报?【英文标题】:how to clear previous alarms in alarm manager? 【发布时间】:2012-02-15 09:28:37 【问题描述】:

我正在开发一个警报应用程序,因为我正在使用警报管理器概念,用户可以选择否。警报前几天(例如,如果他选择 5 天,警报将在 5 天之前出现)比较天数列表来自 sqlite 数据库。我编写了一些代码,它的工作问题是当用户更改警报剩余天数时(例如。 3而不是5)在设置之前(5天)警报不清楚总共8个警报来了(5 + 3)请任何人解决我的问题。

dbcal.set(currentcal.get(Calendar.YEAR), mnth,dt);
Log.e("dbCal Alarm","first"+dbcal.getTime());
if(!dbcal.getTime().before(currentcal.getTime()))
    uniqueno++;
    alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
    Intent intent = new Intent(SampledateActivity.this,AlarmReceiver.class);
    PendingIntent pi = PendingIntent.getBroadcast(SampledateActivity.this, uniqueno, intent, 0);
    alarmManager.set(AlarmManager.RTC_WAKEUP, dbcal.getTimeInMillis(), pi);

for(int k = 1 ; k <= time ;k++)
   Log.e("Entered to alarm","yes");
   dbcal.add(Calendar.HOUR, -24);
   if(!dbcal.getTime().before(currentcal.getTime()))
        uniqueno++;
        Intent intentlocal = new Intent(SampledateActivity.this,AlarmReceiver.class);
        PendingIntent pilocal = PendingIntent.getBroadcast(SampledateActivity.this, uniqueno, intentlocal, 0);
        alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
        alarmManager.set(AlarmManager.RTC_WAKEUP, dbcal.getTimeInMillis(), pilocal);
        Log.e("dbCal Alarm","k: "+"k value:"+k+(time*i+k)+":"+dbcal.getTime());
  

【问题讨论】:

以下网址可能对您有帮助***.com/questions/7933669/… 【参考方案1】:

使用与创建 PendingInent 相同的 requestCode 创建 PendingIntent 以启动 Alarm

Intent intentlocal = new Intent(SampledateActivity.this,AlarmReceiver.class);
PendingIntent pilocal = PendingIntent.getBroadcast(SampledateActivity.this,
                                                       uniqueno, intentlocal, 0);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.cancel(pilocal);
pilocal.cancel();

【讨论】:

感谢您的回复,我正在使用您的代码,但它不起作用 当我选择前 5 天并且我已经更改日期并在几天之间检查一个警报,接下来我选择 1 天并根据我的要求设置日期,在设置警报之前也来了,即我得到了在我选择案例之前,我认为 5 个警报是待处理的警报,即 5 天 让我们continue this discussion in chat【参考方案2】:

我找到了解决问题的方法。每次我刷新我的活动。即,当我单击设置警报按钮时,我已经刷新了我的活动。所以在设置警报之前删除并创建新输入的警报。

【讨论】:

以上是关于如何在警报管理器中清除以前的警报?的主要内容,如果未能解决你的问题,请参考以下文章

警报管理器意外停止

App是通用的,但是资产管理器中的AppIcon没有空间放iPad图标

如何取消警报管理器的每日通知?

向 Microsoft 团队发出警报管理器/prometheus 警报

如何使用警报管理器将数据从片段传递到广播接收器

如何防止单击日期并在引导日期选择器中显示警报消息?