Come posso farlo in Android? Attività -> WebBrowser -> Acrivity, ma premere Indietro non vedere il WebBrowser

Come posso fare che il browser web chiama uno schema personalizzato per avviare un'attività, quindi voglio che premo il button Indietro ma non ritorni il browser web.

Voglio solo implementare l'inoltro quando chiamerò un browser web quindi call il mio schema per avviare un'altra attività. Quando tornerò, non vorrei vedere il browser web.

  • Come aggiornare Google Play Services per gli emulatori Android Studio 2.2?
  • È ansible rilevare la disinstallazione dell'applicazione Android?
  • android 5 e onClick in layout xml
  • orientamento della superficie della videocamera android
  • Come connettersi con un dispositivo Bluetooth accoppiato programmato in Android?
  • Come iniziare l'attività da UncaughtExceptionHandler se questo è il thread principale che si è schiantato?
  • Come devo farlo?

    Intent i = new Intent(Intent.ACTION_VIEW); i.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); i.setData(Uri.parse(url)); startActivity(i); 

    Ho già aggiunto, ma non funziona!

    5 Solutions collect form web for “Come posso farlo in Android? Attività -> WebBrowser -> Acrivity, ma premere Indietro non vedere il WebBrowser”

    Ciò probabilmente accade perché la seconda attività viene lanciata nella stessa attività in cui è stato avviato il browser, il che significa che l'avvio della seconda attività torna all'attività già esistente con l'attività più alta (attività 1) spinta al back-stack. Vedi qui .

    Se si effettua la seconda attività iniziata in un'altra attività, premendo "indietro" dovrebbe terminare l'attività e tornare all'attività dietro il browser.

    Per raggiungere questo objective, è ansible utilizzare FLAG_ACTIVITY_NEW_TASK nell'attività di avvio intento 2 oppure impostare l' android:launchMode dell'attività in singleTop nel tuo manifesto.

    Come spiegato da altri utenti, la tua attività viene creata nello stack del browser. Non è ansible impedire che il browser si apra sul proprio stack, ma è ansible eseguire la stessa configuration nell'applicazione.

    Nell'attività che viene chiamata dal browser, aggiungere nel file di manifestazione quanto segue:

     android:allowTaskReparenting="true" android:launchMode="singleTask" 

    Questo renderà la tua attività creata sul tuo stack di applicazioni (anziché il browser). Questo porterà sostanzialmente la vostra applicazione di nuovo alla parte anteriore.

    android: launchMode = "singleTop" non functionrà perché impedisce la creazione di una nuova attività solo se quella attività è in cima alla pila, che non è il caso in cui il browser è quello attualmente in cima. android: launchMode = "singleTask" assicurerà che altre istanze non siano create indipendentemente da esse in cima o less.

    Se impostate Intent.FLAG_ACTIVITY_NO_HISTORY con la configuration sopra, allora tutto dovrebbe funzionare bene, a prescindere dal browser in precedenza aperto. Nel peggiore dei casi, il browser sarà nella parte inferiore dello stack e se si continua a colpire indietro si arriva alla fine al browser invece di uscire dall'applicazione.

    Quando apri il tuo intento forse puoi impostarlo con flag di no-history

     intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); 

    Ho scoperto che solo Intent.FLAG_ACTIVITY_NO_HISTORY funziona solo se il browser non è stato eseguito prima. Se riavvii Android e gestisco la mia applicazione che chiamerà il browser tutto funziona bene. Ma quando inizio il browser prima della mia applicazione, il browser rimarrà nella storia.

    Ho cercato di aggiungere alla definizione di attività android: launchMode = "singleTop" in base all'utente634618. Ma non funziona. Non capisco perché individualTop dovrebbe aiutare.

    Nella documentazione è anche questo:

    BlockquoteAs un altro esempio, l'applicazione Android Browser dichiara che l'attività del browser web dovrebbe sempre aprire nella sua propria attività, specificando la modalità di lancio singolo nel elemento. Ciò significa che se l'applicazione rilascia un'intenzione per aprire il Browser Android, la sua attività non viene collocata nella stessa attività dell'applicazione. Invece, viene avviata una nuova attività per il browser o, se il browser ha già un'attività in esecuzione in background, l'attività viene portta avanti per gestire la nuova intenzione.

    Penso che questo causa il problema. Ma come forzare l'esecuzione del browser nell'attività corrente?

    Conosco anche questo problema. Ecco il riassunto:

    1. Se il browser non è stato eseguito prima, funziona bene con le risposte di cui sopra; se il browser è stato eseguito prima:
    2. intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY) NON funziona;
    3. android:allowTaskReparenting="true" android:launchMode="singleTask" sembra mettere il browser nella parte inferiore dello stack di attività, ma dopo aver chiuso l'applicazione (dal tasto BACK), alla fine il browser viene nuovamente lanciato.

    Quindi fondamentalmente questo problema esiste ancora. Posso submit se trovo un modo per risolverlo.

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.