Ich verwende eine Android-Benachrichtigung, um den Benutzer zu benachrichtigen, sobald ein Dienst beendet ist (Erfolg oder Misserfolg), und ich möchte lokale Dateien löschen, sobald der Vorgang abgeschlossen ist.
Mein Problem ist, dass ich im Falle eines Fehlers dem Benutzer eine "Wiederholungs" -Option erlauben möchte. und wenn er sich dafür entscheidet, die Benachrichtigung nicht erneut zu versuchen und zu verwerfen, möchte ich lokale Dateien löschen, die für die Prozesszwecke gespeichert wurden (Bilder ...).
Gibt es eine Möglichkeit, das Swipe-to-Dismiss-Ereignis der Benachrichtigung abzufangen?
quelle
builder.setAutoCancel(true);
wenn ein Benutzer auf die Benachrichtigung klickt und diese abgebrochen wird, die Löschabsicht nicht ausgelöst wirdEine vollständig ausgefüllte Antwort (danke an Herrn Me für die Antwort):
1) Erstellen Sie einen Empfänger, um das Ereignis "Wischen zum Entlassen" zu behandeln:
2) Fügen Sie Ihrem Manifest einen Eintrag hinzu:
3) Erstellen Sie die ausstehende Absicht mit einer eindeutigen ID für die ausstehende Absicht (hier wird die Benachrichtigungs-ID verwendet), da ohne diese die gleichen Extras für jedes Entlassungsereignis wiederverwendet werden:
4) Erstellen Sie Ihre Benachrichtigung:
quelle
setAutoCancel(true)
, die Benachrichtigung abgebrochen , wenn Sie daraufEine andere Idee:
Wenn Sie normalerweise eine Benachrichtigung erstellen, benötigen Sie auch die Aktionen eins, zwei oder drei. Ich habe einen "NotifyManager" erstellt, der alle benötigten Benachrichtigungen erstellt und auch alle beabsichtigten Anrufe empfängt. So kann ich alle Aktionen verwalten UND auch das Entlassungsereignis an EINEM Ort abfangen.
Verwenden Sie Folgendes, um den deleteIntent zu erstellen (im NotificationManager):
und DAS verwende ich, um die Löschabsicht wie folgt festzulegen (im NotificationManager):
und schließlich befindet sich im selben NotificationManager die Funktion perform:
quelle