2016-03-12 3 views
7

Ich mache eine Android App und ich möchte alle Benachrichtigungen, die ein bestimmtes Tag haben, abbrechen.Können alle Benachrichtigungen mit einem bestimmten Tag abgebrochen werden?

Momentan scheint es nur möglich, Benachrichtigungen durch ihre ID (int id) oder ihre IDs und Tags zu löschen.

mNotificationManager.cancel (int id);

oder

mNotificationManager.cancel (String-Tag, int id);

Ich möchte alle Benachrichtigungen von String-Tag unabhängig von Int ID abbrechen können.

Ist das möglich?

Antwort

5

Nein, ist es nicht. Wie Notification eingerichtet wird, ID ist der Primärschlüssel. Sie können einen Unterschlüssel mit einem Tag hinzufügen und ein einzelnes (Tag, ID) -Paar auf diese Weise abbrechen, aber Sie können nicht basierend auf dem Tag allein abbrechen. Ich bin mir wirklich nicht sicher, warum sie einen Tag-Parameter hinzugefügt haben, da er eher redundant erscheint, außer dass möglicherweise ein String-Parameter das Debuggen erleichtert.

+6

Tags sind sehr nützlich, wenn Sie eine App mit mehreren Komponenten mithilfe von Benachrichtigungen entwickeln. Wenn Sie für jede Komponente ein Tag festlegen, müssen Sie sich im Zusammenhang mit allen Komponenten nicht um die Eindeutigkeit der IDs kümmern. Sie müssen nur lokal einzigartig sein. – Nedko

+0

@Nedko über welche Komponenten sprechen Sie? und kannst du mir ein Codebeispiel von 'tag' geben? – UnKnown

+0

@Gabe Wie 'tag' könnte für Debugging-Zwecke nützlich sein? – UnKnown

1

Auf Android-API> = 23 können Sie so etwas tun, um eine Gruppe von Benachrichtigungen zu entfernen. für (StatusBarNotification statusBarNotification: mNotificationManager.getActiveNotifications()) { if (KEY_MESSAGE_GROUP.equals (statusBarNotification.getGroupKey())) { mNotificationManager.cancel (statusBarNotification.getId()); } }

1

Scheint möglich, wenn Sie Benachrichtigungsgruppen verwenden. Das Abbrechen der Gruppenzusammenfassungsbenachrichtigung scheint die gesamte Gruppe abzubrechen.

Verwandte Themen