Czy możliwe jest programowe wyczyszczenie powiadomienia?
Wypróbowałem to z, NotificationManager
ale nie działa. Czy mogę to zrobić w inny sposób?
android
notifications
rahul
źródło
źródło
Odpowiedzi:
Użyj poniższego kodu, aby anulować powiadomienie:
W tym kodzie zawsze znajduje się ten sam identyfikator używany do powiadomień. Jeśli masz różne powiadomienia, które należy anulować, musisz zapisać identyfikatory użyte do utworzenia powiadomienia.
źródło
setContentText
), chociaż ustawiam priorytet na 2. Jakieś sugestie?Od: http://developer.android.com/guide/topics/ui/notifiers/notifications.html
Ale Donal ma rację, możesz wyczyścić tylko powiadomienia, które utworzyłeś.
źródło
Ponieważ nikt nie opublikował odpowiedzi na to pytanie:
.. a jeśli masz już flagi, możesz OR FLAG_AUTO_CANCEL w ten sposób:
źródło
notifcation.flags |= Notification.FLAG_AUTO_CANCEL;
Spróbuj domyślnej metody podanej w NotificationManager .
NotificationManager.cancelAll()
aby usunąć wszystkie powiadomienia.NotificationManager.cancel(notificationId)
aby usunąć konkretne powiadomienie.źródło
cancel
metody,cancel
metoda nie jest statyczna, więc potrzebujesz takiej instancjiNotificationManager
:NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
Następnie możesz zadzwonićnotificationManager.cancel(notificationId);
jak Rohit Suthar, do którego odwołuje się jego odpowiedź.notificationId
to po prostu identyfikator, który przekazałeśnotificationManager.notify(notificationId, mNotification)
Począwszy od poziomu API 18 (Jellybean MR2) możesz anulować powiadomienia inne niż własne za pośrednictwem usługi NotificationListenerService.
...
źródło
.setAutoCancel (true)
po kliknięciu powiadomienia otwórz odpowiednią czynność i usuń powiadomienie z paska powiadomień
źródło
Jeśli generujesz powiadomienie z usługi, która jest uruchamiana na pierwszym planie przy użyciu
Następnie wydawanie
nie kończy się anulowaniem powiadomienia, a powiadomienie nadal pojawia się na pasku stanu. W tym konkretnym przypadku będziesz musiał wydać
z poziomu usługi, aby przełączyć ją z powrotem w tryb tła i jednocześnie anulować powiadomienia. Alternatywnie możesz umieścić go w tle bez konieczności anulowania powiadomienia, a następnie anulować powiadomienie.
źródło
Jeśli używasz
NotificationCompat.Builder
(częściandroid.support.v4
), po prostu wywołaj metodę obiektusetAutoCancel
Niektórzy faceci zgłaszali, że
setAutoCancel()
to nie działa, więc możesz spróbować również w ten sposóbZwróć uwagę, że metoda
getNotification()
została wycofana !!!źródło
to działa, jeśli używasz konstruktora powiadomień ...
źródło
aby uzyskać więcej informacji, kliknij tutaj http://androiddhina.blogspot.in/2015/01/how-to-clear-notification-in-android.html
źródło
Właściwie, zgodnie z odpowiedzią przed rozpoczęciem od poziomu API 18, możesz anulować powiadomienia wysyłane przez inne aplikacje różniące się od Twoich własnych za pomocą NotificationListenerService, ale to podejście nie będzie już działać w Lollipop, oto sposób na usunięcie powiadomień obejmujących również Lillipop API.
źródło
cancelNotification
co to jest?Wszystkie powiadomienia (nawet inne powiadomienia aplikacji) można usunąć, nasłuchując „NotificationListenerService”, jak wspomniano w NotificationListenerService Implementation
W serwisie trzeba zadzwonić
cancelAllNotifications()
.Usługa musi być włączona dla Twojej aplikacji poprzez:
„Aplikacje i powiadomienia” -> „Specjalny dostęp do aplikacji” -> „Dostęp do powiadomień”.
źródło
ten kod zadziałał dla mnie:
źródło
Uważam, że NAJNOWSZE i AKTUALIZOWANE dla AndroidX i kompatybilności wstecznej. Najlepiej zrobić to (Kotlin i Java) w następujący sposób:
Lub anulowanie wszystkich powiadomień to:
Stworzony dla AndroidX lub bibliotek wsparcia.
źródło