2016-03-12 22 views
7

Tworzę aplikację dla systemu Android i chcę anulować wszystkie powiadomienia z określonym tagiem.Czy można anulować wszystkie powiadomienia z określoną etykietą?

Teraz tylko możliwe jest anulowanie powiadomień według ich id (int id) lub ich identyfikatorów i tagów.

mNotificationManager.cancel (int id);

lub

mNotificationManager.cancel (ciąg znaczników, Int id);

Chcę móc anulować wszystkie powiadomienia o tagu String niezależnie od int id.

Czy to możliwe?

Odpowiedz

5

Nie, nie jest. Sposób w jaki Powiadomienie jest ustawione, id jest kluczem podstawowym. Możesz dodać podklucz z tagiem i anulować w ten sposób parę (tag, identyfikator), ale nie można anulować w oparciu o sam tag. Naprawdę nie jestem pewien, dlaczego dodali parametr znacznika, ponieważ wydaje się on raczej zbędny, z wyjątkiem tego, że prawdopodobnie parametr łańcucha ułatwia debugowanie.

+6

Tagi są bardzo przydatne podczas opracowywania aplikacji z wieloma komponentami za pomocą powiadomień. Jeśli ustawisz znacznik dla każdego komponentu, nie musisz martwić się wyjątkowością identyfikatorów w kontekście wszystkich komponentów. Muszą być po prostu wyjątkowe lokalnie. – Nedko

+0

@Nedko o których komponentach mówisz? i czy możesz podać przykładowy kod użycia tagu? – UnKnown

+0

@Gabe jak "tag" może być przydatny do celów debugowania? – UnKnown

1

W Androidzie API> = 23 możesz zrobić coś takiego, aby usunąć grupę powiadomień. dla (StatusBarNotification statusBarNotification: mNotificationManager.getActiveNotifications()) { if (KEY_MESSAGE_GROUP.equals (statusBarNotification.getGroupKey())) { mNotificationManager.cancel (statusBarNotification.getId()); } }

1

Wydaje się to możliwe, jeśli korzystasz z grup powiadomień. Anulowanie powiadomienia o zbiorczym podsumowaniu wydaje się anulować całą grupę.