34

任何人都知道我們如何從應用程序中刪除通過使用待定意圖調用的應用程序的通知。如何在android中以編程方式從通知欄中刪除通知?

我曾經使用下面的方法取消通知。

AlarmManager am=(AlarmManager)getSystemService(Context.ALARM_SERVICE); 
Intent intent = new Intent(Display.this, TwoAlarmService.class); 
PendingIntent pi = PendingIntent.getBroadcast(Display.this, AlarmNumber, intent, PendingIntent.FLAG_CANCEL_CURRENT); 
am.cancel(pi); 

但是問題是已經發出的通知不會從通知欄中刪除。

在此先感謝...

enter image description here

+0

您好,我不知道是否有可能programaticaly移除通知之前,但是你可以重寫新的最老的通知確實如此。如果它充分滿足您的要求,那麼我可以在這裏發佈代碼。 PLZ回覆 –

+0

不,實際上我有兩個不同的通知,我已經取消通知。 –

回答

105

也許試試這個:

NotificationManager notificationManager = (NotificationManager) getApplicationContext().getSystemService(Context.NOTIFICATION_SERVICE); 
notificationManager.cancel(NOTIFICATION_ID); 

或者,你也可以做到這一點,以消除在給定範圍內的所有通知:

notificationManager.cancelAll(); 

看到這篇文檔鏈接:NotificationManager

用戶退出通知單獨或通過使用「全部清除」(如果該通知可以被清除):直到下列任一情況

+0

它確實有效! :)謝謝... –

+4

我沒有看到'if(Context.NOTIFICATION_SERVICE!= null)'的意思,因爲這是一個String常量,並且永遠不會爲空。 – tar

+4

你是對的這個測試是無用的,我不知道爲什麼我這樣做(刪除它):/ –

0

通知仍然可見。 用戶單擊通知,並在創建通知時調用setAutoCancel()。 您爲特定的通知ID調用cancel()。此方法還會刪除正在進行的通知。 您可以調用cancelAll(),它將刪除先前發出的所有通知。 如果您在使用setTimeoutAfter()創建通知時設置超時,系統會在指定的持續時間過後取消通知。如果需要,您可以取消通知指定的超時時間流逝 公共無效cancelNotification(){

String ns = NOTIFICATION_SERVICE; 
    NotificationManager nMgr = (NotificationManager) getActivity().getApplicationContext().getSystemService(ns); 
    nMgr.cancel(NOTIFICATION_ID); 
} 
相關問題