2014-09-15 15 views
7

Ho implementato DeeplinkActivity per catturare lo schema di dati del filtro intent e aprire un'attività. Il problema che sto riscontrando è che l'app è già aperta in background e quindi l'utente fa clic su un link diretto per aprire l'attività della schermata iniziale. Se l'utente preme indietro per uscire dall'app, andrà a ciò che era in esecuzione in background. Volevo solo tornare indietro dall'app.Collegamento diretto a un'app mentre l'app è già in esecuzione in background

Ho provato questo.

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

Ma questo non funziona. Eventuali suggerimenti?

+0

Forse "FLAG_ACTIVITY_CLEAR_TASK' è quello che stai cercando? – kcoppock

+0

Lo provo e vi torno domani. Grazie! – DDukesterman

+0

Non funziona ... C'è un modo per portarlo in primo piano se è in esecuzione se non si apre l'app? – DDukesterman

risposta

-1

Trovato questa domanda di quasi 2 anni pur fronte esattamente lo stesso problema ... Probabilmente troppo tardi, ma per chiunque altro con lo stesso problema: La mia soluzione a questo è utilizzare al posto del contesto corrente (attività) il contesto applicativo. Così la linea 3 si presenta come:

0

realtà ci sono due modi per gestire il tuo problema:

entrambi i set android:launchMode="singleInstance" (reference) nel manifesto della vostra attività, che è chiamata dal profondo legame. Quindi, l'attività è sempre il solo ed unico membro del suo compito. Quindi l'attività non riutilizzerà alcuna attività dal backstack nella tua app che è già in esecuzione. Fai attenzione anche a singleInstance, se apri un'attività singleInstance con un link diretto e poi navighi da lì a un'altra attività e premi di nuovo, passerai all'attività padre dell'attività corrente e non alla tua attività singleInstance. Quindi, distrugge in qualche modo la navigazione posteriore standard e devi gestire tutti questi casi speciali, che possono essere abbastanza fastidiosi.

Oppure, per API> = 16, è possibile utilizzare: finishAffinity() (reference) nella onBackPressed() metodo della vostra attività, ma qui si deve distinguere in qualche modo, se l'applicazione è stata aperta tramite deep link, altrimenti si sta per chiudere la tua app, anche quando vuoi semplicemente tornare al menu principale.

Problemi correlati