我正在製作一個應用程序,用戶可以根據GPS位置設置鬧鐘。我只希望在任何時候都有1個鬧鐘處於活動狀態。因此,當用戶設置第二個鬧鐘時,我想要取消第一個鬧鐘的通知(然後設置第二個鬧鐘的新通知)。如何取消Android通知?
現在,我的通知繼續堆疊(因爲我無法刪除它們,所以它們都是活動的)。這裏是我的代碼,我正在試圖刪除警報和通知(S):
// Stop the location alarm activity
Intent intentAlarmService_delete = new Intent(v.getContext(), AlarmService.class);
stopService(intentAlarmService_delete); // I think this calls onDestroy() in AlarmService class ...
mNtf = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
mNtf.cancelAll();
Intent alarmIntent2 = new Intent(getApplicationContext(), OneTimeAlarmReceiver.class);
PendingIntent pendingIntentAlarm = PendingIntent.getBroadcast(getApplicationContext(), PENDING_INTENT_REQUEST_CODE1,
alarmIntent2, PendingIntent.FLAG_CANCEL_CURRENT);
pendingIntentAlarm.cancel();
這是我AlarmService.class中的onDestroy()函數(我真的不知道,當這個叫.. 。)
public void onDestroy(){
super.onDestroy();
mNtf.cancel(NOTIFICATION_ID1);
Intent alarmIntent = new Intent(getApplicationContext(), OneTimeAlarmReceiver.class);
PendingIntent pendingIntentAlarm = PendingIntent.getBroadcast(getApplicationContext(), PENDING_INTENT_REQUEST_CODE1,
alarmIntent, PendingIntent.FLAG_CANCEL_CURRENT);
pendingIntentAlarm.cancel();
Intent intentAlarmService = new Intent(getApplicationContext(), AlarmService.class);
stopService(intentAlarmService);
mNtf.cancel(NOTIFICATION_ID1);
mNtf.cancelAll();
}
那麼,這就是我如何設置一個新的警報和通知:
Intent intentAlarmService2 = new Intent(v.getContext(), AlarmService.class);
startService(intentAlarmService2);
順便說一句,我的AlarmService.class工作是肯定的。
在此先感謝。
嗯,我檢查了你所建議的所有東西,但沒有一個能夠正常工作... (我不能使用「this」,因爲我似乎得到一個錯誤 - 這可能導致所有代碼都在「public void onClick(View v)「功能。)+(我不使用onBind();)+(在沒有陌生的東西) –
2010-08-13 00:21:58
我要說明到底發生了什麼: 我嘗試在NotificationManager調用cancelAll(),但: 1 )我設置了一個新的通知(它顯示在「通知窗口」 - 當你從屏幕頂部向下滑動手指到底部時) 2)我刪除了通知(它從「通知窗口」 3消失)我設置了一個新的通知***(它顯示在「通知窗口」中,但是之前的通知(已被刪除)顯示在最新的通知(剛剛設置)之上),並且2個通知保持閃爍/交替「通知窗口」 – 2010-08-13 00:22:17
@亞西爾瑪朗:「我不能使用」這個「,因爲我似乎得到一個錯誤」 - 你是在內部類中,然後需要使用'MyOuterClass.this'(將您的活動類名稱替換爲'MyOuterClass')。 – CommonsWare 2010-08-13 00:27:34