2016-06-22 8 views
1

Ich habe einen Benachrichtigungs-Listener eingerichtet. Ich habe eine Funktion, die jedes Mal aufgerufen wird, wenn eine Benachrichtigung gesendet wird. Auf Lollipop funktioniert es super. Die Funktion wird einmal pro neuer Benachrichtigung ausgelöst. Das ist was ich will. Ich möchte (sagen wir mal) nacheinander alle eingehenden Benachrichtigungen protokollieren.Kann ich OnNotificationPosted() Duplikate in Marshmallow herausfiltern?

Auf Marshmallow ist das Verhalten anders. Berücksichtigen Sie SMS-Benachrichtigungen. Wenn ich eine SMS von Person X bekomme, wird OnNotificationPosted() einmal ausgelöst, und ich protokolliere etwas wie "Sie haben einen Text von Person X ..."

Wenn diese Benachrichtigung nicht vom Benutzer gelöscht wird, und eine zusätzliche SMS wird von Person Y empfangen, onNotificationPosted() wird 3 mal ausgelöst. Einer davon beschreibt den Cluster wie "Sie haben 2 Texte", ein anderer ist "Sie haben einen Text von Person Y" und der dritte ist "Sie haben einen Text von Person X."

Also von 2 Texte erhalten, onNotificationPosted() wird 4 Mal ausgelöst, und 2 davon sind praktisch identisch. Dies wird viel schlimmer, wenn mehrere ungelesene Nachrichten von mehreren Personen vorliegen. Sie sind alle wieder gemeldet, wenn eine neue kommt.

Gibt es eine Möglichkeit für mich, die Duplikate nur durch Blick auf das Objekt StatusBarNotification herauszufiltern?

Ich sehe, dass ich im Fall von SMS nach GroupKey! = Null und sortKey == 00 in den Benachrichtigungseigenschaften suchen kann, um sicherzustellen, dass ich nur die neuesten (neue Daten) SMS, aber ich Ich bin besorgt, dass verschiedene Apps unterschiedliche Sortierschemata haben werden, wodurch dieser Ansatz ungültig wird.

Jede Hilfe wäre willkommen.

+0

Hey, hast du eine Lösung dafür gefunden? –

Antwort

0

Ich habe das gleiche Problem konfrontiert und stellt sich heraus, es gibt keine direkte Lösung für sie. Sie müssen Ihre eigene Logik implementieren, um Dubletten zu identifizieren. Ich empfehle Ihnen, Ihre eigene Benachrichtigungsklasse zu erstellen, die benötigten Informationen aus der StatusBarNotification zu extrahieren, die Sie in der onNotificationPosted() -Methode erhalten, und die benutzerdefinierte Benachrichtigung zu initialisieren. Dann können Sie Ihre eigene equals-Methode erstellen, um Duplikate zu bestimmen.

Verwandte Themen