2014-09-15 5 views
7

Ich habe eine DeeplinkActivity implementiert, um das Intent-Filter-Datenschema abzufangen und eine Aktivität zu öffnen. Das Problem, das ich habe, ist, dass die App bereits im Hintergrund geöffnet ist und der Benutzer dann auf einen Deep Link klickt, um die Home-Bildschirm-Aktivität zu öffnen. Wenn der Benutzer zurück drückt, um die App zu verlassen, wird er zu dem laufen, was im Hintergrund läuft. Ich wollte, dass es einfach aus der App zurückgeht.Deep-Link in eine App, während die App bereits im Hintergrund läuft

Ich habe das versucht.

 Intent intent = new Intent(this, LaunchActivity.class); 
     intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); 
     startActivity(intent); 

Aber das funktioniert nicht. Irgendwelche Vorschläge?

+0

Vielleicht ist 'FLAG_ACTIVITY_CLEAR_TASK' das was Sie suchen? – kcoppock

+0

Ich versuche das und melde mich morgen wieder. Vielen Dank! – DDukesterman

+0

Funktioniert nicht ... Gibt es eine Möglichkeit, es in den Vordergrund zu bringen, wenn es ausgeführt wird, wenn die App nicht geöffnet wird? – DDukesterman

Antwort

-1

Gefunden diese fast 2 Jahre alte Frage mit dem gleichen Problem konfrontiert ... Wahrscheinlich zu spät, aber für alle anderen mit dem gleichen Problem: Meine Lösung ist, statt der aktuellen (Aktivität) Kontext zu verwenden Anwendungskontext. So ist die dritte Zeile wie folgt aussieht:

0

Es gibt zwei Möglichkeiten, um Ihr Problem zu behandeln:

Entweder setzte android:launchMode="singleInstance" (reference) im Manifest Ihrer Tätigkeit, die aus dem Deep-Link aufgerufen wird. Also ist die Aktivität immer das einzige und einzige Mitglied ihrer Aufgabe. Die Aktivität wird also keine Aufgaben aus dem Backstack in Ihrer App wiederverwenden, die bereits ausgeführt wird. Seien Sie auch vorsichtig mit singleInstance. Wenn Sie eine singleInstance-Aktivität mit einem Deep-Link öffnen und dann von dort zu einer anderen Aktivität navigieren und zurück drücken, gelangen Sie zur übergeordneten Aktivität der aktuellen Aktivität und nicht zu Ihrer singleInstance-Aktivität. Es zerstört also irgendwie die Standard-Rückwärtsnavigation und Sie müssen all diese speziellen Fälle behandeln, was ziemlich ärgerlich sein kann.

Oder für API> = 16, können Sie verwenden: finishAffinity() (reference) in Ihrem onBackPressed() Methode Ihrer Aktivität, aber hier haben Sie irgendwie zu unterscheiden, wenn die App über Deep-Link geöffnet wurde, sonst es wird schließen Ihre App, auch wenn Sie nur zurück zu Ihrem Hauptmenü navigieren möchten.

Verwandte Themen