我在不同时间设置闹钟。我想删除一个特殊警报。 防爆。我在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);
我有一个广播接收器来接收警报。
答案 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对象。