34

Każdy ma pomysł, jak możemy programowo usunąć powiadomienie z aplikacji, które nazywa się przy użyciu intencji oczekującej.Jak programowo usunąć powiadomienie z paska powiadomień w systemie Android?

Użyłem do anulowania powiadomienia za pomocą następującej metody.

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); 

Ale problemem jest powiadomienie który wystrzelił już, że nie są usuwane z paska powiadomień.

góry dzięki ...

enter image description here

+0

hi nie wiem, czy to możliwe, aby usunąć powiadomienie programaticaly, ale można zastąpić stare z nowym powiadomienie jedno, które jest pewne. jeśli jest to pełne zapotrzebowanie, mogę wysłać tutaj kod. plz reply –

+0

Nie, w rzeczywistości mam dwa różne powiadomienia i już anuluję powiadomienie. –

Odpowiedz

105

Może spróbuj tego:

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

OR, można też to zrobić, aby anulować wszystkie powiadomienia w danym kontekście:

notificationManager.cancelAll(); 

Zobacz ten link do dokumentacji: NotificationManager

+0

To naprawdę działało !!! :) Dzięki ... –

+4

Nie widzę punktu 'if (Context.NOTIFICATION_SERVICE! = Null)' ponieważ jest to stała String i nigdy nie będzie miała wartości NULL. – tar

+4

masz rację ten test jest bezużyteczny, nie wiem dlaczego to zrobiłem (usunięto): / –

0

Powiadomienia pozostają widoczne, dopóki jedna z poniższych sytuacji:

Użytkownik odrzuca zgłoszenie indywidualnie lub za pomocą „Wyczyść wszystko” (jeżeli zgłoszenie można skasować). Użytkownik klika powiadomienie, a użytkownik wywołał funkcję setAutoCancel() po utworzeniu powiadomienia. Wywołujesz cancel() dla określonego identyfikatora powiadomienia. Ta metoda usuwa również bieżące powiadomienia. Wywołujesz funkcję cancelAll(), która usuwa wszystkie wcześniej wysłane powiadomienia. Jeśli ustawisz limit czasu podczas tworzenia powiadomienia za pomocą setTimeoutAfter(), system anuluje powiadomienie po upływie określonego czasu. W razie potrzeby, można anulować zgłoszenie, zanim upłynie określony limit czasu trwania public void cancelNotification() {

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