Android Deep-Linking. Intent wird nicht zurückgesetzt, wenn die App aus dem Verlauf geöffnet wird

8

Ich habe ein Problem in Bezug auf die Verwaltung von Android-Aufgaben und -Abteilungen.

Szenario

  1. Der Nutzer erhält einen Push mit einem Deep-Link in die App.
  2. Wir zeigen eine Benachrichtigung, in der der URI in die Intent-Daten eingefügt wird.
  3. Der Benutzer klickt auf die Benachrichtigung und wird in die App weitergeleitet und zu einer Feature1Activity weitergeleitet, die von Deep-Link beschrieben wird.
  4. Der Nutzer schaut sich um und verlässt die App.
  5. Später öffnet der Benutzer die App aus dem Verlauf (lange Home- oder Multitasking-Taste drücken).
  6. Nun wird die gleiche Absicht verwendet, die von der Benachrichtigung verwendet wurde (mit dem Deep-Link in den Intent-Daten), um die App zu starten.
  7. Daher wird der Benutzer wieder in die Feature1Activity aufgenommen.

Problem:

Wenn Sie die App über den Verlauf starten (langes Drücken der Home- oder Multitasking-Taste), wird die Aufgabe nicht zurückgesetzt (was beim Starten über das App-Symbol geschieht).

Ich verstehe, dass das Starten einer App aus dem Verlauf die Aufgabe nicht zurücksetzen soll, da sie als "Recht-zurück-wo-du-warst" verwendet werden soll. In meinem Fall ist dies jedoch ein Problem, da der Start der App aus einer Benachrichtigung einmalig ist.

Hat noch jemand dieses Problem? Wer kennt keine Lösung?

Detaillierter

Die Absicht im PendingIntent ist wie folgt aufgebaut:

%Vor%

Ich habe gerade an diesem Tag von FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET erfahren und dachte wirklich, dass es mein Problem loswerden würde, aber es machte keinen Unterschied.

Es gibt drei interessante Aktivitäten:

%Vor%

Was passiert, wenn der Benutzer auf die Benachrichtigung klickt, ist, dass die SplashActivity als Listener für das Schema fungiert und die Deep-Link-URL in zwei Intents konvertiert, um OverviewActivity und Feature1Activity mit Activity.startActivities (Intent []) zu starten.

Wenn ich die Absicht aus der Benachrichtigung in SplashActivity ansehe, enthält sie immer den Deep-Link in den Daten.

Man arbeitet herum

Es gibt ein Problem, indem Sie ein booleanExtra-Feld auf die Benachrichtigungsabsicht setzen (zum Beispiel "ignoreWhenLaunchedFromHistory" = true) und dann SplashActivity einchecken, bevor Sie es weiterleiten

%Vor%

Abgesehen davon, dass es hackig und hässlich ist, können Sie irgendwelche Probleme mit dieser Arbeit sehen?

EDIT: Die Arbeit funktioniert nur, wenn ich dafür verantwortlich bin, die Absicht mit dem Deep-Link zu senden. Da keine externe Quelle über den Zusatz "ignoreWhenLaunchedFromHistory" Bescheid wissen kann.

    
jelgh 18.06.2014, 11:38
quelle

1 Antwort

1

Von dem, was ich bekomme, könnte die Verwendung von android:excludeFromRecents="true" in Ihrem Manifest (als Eigenschaft für die Aktivitätsdeklaration) das Problem möglicherweise beheben?

    
Daniel Monteiro 18.09.2015 14:22
quelle

Tags und Links