0
我正在設置多個報警,它們具有完全相同的PendingIntent
對象,但它們的關閉時間是不同的。如果我通過向PendingIntent
提供與PendingIntent
相同的對象Intent
取消一個警報,並將其傳遞給AlarmManager.cancel()
,它是否會取消所有警報(即具有不同的開始時間)還是會顯示其他一些行爲?如何一次性取消具有重複PendingIntent的多個警報?
下面是代碼:
while(size != 0)
{
timeToSet = getNewTime(); //gets calendar object
Intent intent = new Intent(this, MyAlarmReceiver.class);
intent.putExtra("uniqueid", uuid);
intent.putExtra("vibrate", myalarm.getVibrate());
intent.putExtra("important", myalarm.getImportant());
PendingIntent pendingIntent = PendingIntent.getBroadcast(this.getApplicationContext(),
0, intent, PendingIntent.FLAG_UPDATE_CURRENT | Intent.FILL_IN_DATA);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, timeToSet.getTimeInMillis(), 604800000, pendingIntent);
size--;
}
所以意圖對象是相同的所有報警,但時間是不同的。 現在,當我取消這些警報:
Intent intent = new Intent(this, MyAlarmReceiver.class);
intent.putExtra("uniqueid", uuid);
intent.putExtra("vibrate", myalarm.getVibrate());
intent.putExtra("important", myalarm.getImportant());
PendingIntent pendingIntent = PendingIntent.getBroadcast(this.getApplicationContext(), 0, intent, PendingIntent.FLAG_UPDATE_CURRENT | Intent.FILL_IN_DATA);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.cancel(pendingIntent);
將所有的警報被取消?這就是我想要的。我可以在每個PendingIntent
中使用不同的requestCode
,但是如果它們全部被取消,那麼它會更好,因爲我不想維護和存儲這些額外的requestCodes
。
謝謝!
這就是我想要做的,一起取消所有鬧鐘。謝謝! – 2012-07-09 08:59:54