在取消闹钟时,必须使用与创建闹钟时完全相同的PendingIntent对象。如下面的示例代码所示:
//创建一个闹钟 AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); Intent intent = new Intent(this, MyBroadcastReceiver.class); PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, 0); alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 10000, pendingIntent);
//取消闹钟 Intent intent = new Intent(this, MyBroadcastReceiver.class); PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, 0); AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); alarmManager.cancel(pendingIntent);
需要注意的是,这里的PendingIntent是使用getBroadcast()方法创建的,并使用了相同的requestCode参数。如果使用了不同的requestCode或不同类型的PendingIntent,取消闹钟将不起作用。