取消特定警报

时间:2012-02-22 05:30:47

标签: android alarms

我在不同时间设置闹钟。我想删除一个特殊警报。 防爆。我在diiferents时间设置了100个警报,现在我要删除2012年2月25日上午10点45分的警报设置。我怎么能这样做。

我写下以下代码来设置闹钟。

       final AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
       GregorianCalendar  gc=new GregorianCalendar();
       gc.set(2012, 1, 22, 10, 42,0);

       Intent intent = new Intent(this, AlarmService.class);
       gc.set(Calendar.AM_PM,0);

       final PendingIntent sender = PendingIntent.getBroadcast(this, 1, intent, PendingIntent.FLAG_UPDATE_CURRENT);

       am.set(AlarmManager.RTC_WAKEUP, gc.getTimeInMillis(), sender);

我有一个广播接收器来接收警报。

2 个答案:

答案 0 :(得分:4)

您需要保存警报请求代码,在此情况下为1。您在PendingIntent.getBroadcast()方法中传递的第二个参数是特定警报的请求代码。因此,当您保存请求代码以及设置警报的时间时,您将很容易获得特定警报实例然后你可以使用以下方法取消它:

AlarmManager am = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(context, OneShotAlarm.class);    //OneShotAlarm is the broadcast receiver you use for alarm      
PendingIntent sender = PendingIntent.getBroadcast(context,alarm_request_code, intent, 0);
am.cancel(sender);

您应该注意不同警报的每个请求代码都应该是唯一的,否则您的警报将会使用旧请求代码设置的新时间重新安排。

希望你明白这一点。

答案 1 :(得分:0)

您可能需要将其存储在某种形式的数据结构中,以跟踪时间和对象。话虽这么说,我还没有尝试过存储AlarmManager对象。