取消alarm使用AlarmManager.cancel()函數,傳入參數是個PendingIntent實例。
該函數會將所有跟這個PendingIntent相同的Alarm全部取消,怎么判斷兩者是否相同,android使用的是intent.filterEquals(),具體就是判斷兩個PendingIntent的action、data、type、class和category是否完全相同。
具體代碼如下:
設置鬧鍾:
// 指定啟動AlarmActivity組件 Intent intent = new Intent(AlarmTest.this, AlarmActivity.class); intent.setAction("111111"); // 創建PendingIntent對象 PendingIntent pi = PendingIntent.getActivity( AlarmTest.this, 0, intent, 0); Calendar c = Calendar.getInstance(); // 根據用戶選擇時間來設置Calendar對象 System.out.println("hourOfDay = " + hourOfDay); System.out.println("minute = " + minute); c.set(Calendar.HOUR, hourOfDay); c.set(Calendar.MINUTE, minute); // 設置AlarmManager將在Calendar對應的時間啟動指定組件 aManager.set(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(), pi);
取消該鬧鍾:
//用於取消的 Intent intent = new Intent(AlarmTest.this, AlarmActivity.class); intent.setAction("111111"); // 創建PendingIntent對象 PendingIntent pendingIntent = PendingIntent.getActivity( AlarmTest.this, 0, intent, 0); aManager.cancel(pendingIntent);