2011-12-29 17 views
5

Ho un programma che ho realizzato per Android 1.6 e versioni successive e ho eseguito test per garantire che il programma funzioni correttamente con il nuovo Ice Cream Sandwich (Android 4).Avvio del browser su Ice Cream Sandwich

Tutto sull'app funziona perfettamente, tranne che quando un determinato compito è stato eseguito dall'utente, si suppone che avvii automaticamente il browser Android. Tuttavia per qualche motivo sembra caricarlo in background e mantiene la mia app mostrata che non è ciò che voglio che faccia.

Su ogni altra versione di Android, quando eseguo il codice per avviare il browser, il browser viene visualizzato nella parte superiore dello schermo, pertanto la mia app è sullo sfondo, il che significa che volevo che funzionasse.

Di seguito è il codice che devo avviare il browser

Intent intent = new Intent(); 
intent.setAction(Intent.ACTION_VIEW); 
intent.addCategory(Intent.CATEGORY_BROWSABLE); 
intent.setData(Uri.parse(companyURL)); 
startActivity(intent); 

Il companyurl è una variabile che sto usando per analizzare l'URL del browser.

Grazie per l'aiuto che puoi fornire.

UPDATE ho appena scoperto che se il browser non è attualmente in esecuzione (vale a dire non è stato caricato in precedenza), quando la mia applicazione si avvia il browser che porta in primo piano. Tuttavia, una volta caricato il browser, quando la mia app lo carica di nuovo, lo carica in background.

+0

Ci deve essere qualcosa di più in corso rispetto a quello che stai mostrando qui. Tutti i tipi di cose nella piattaforma e nelle app standard lanciano il browser con ACTION_VIEW e un URI (come fare clic su un link nelle app Email o Gmail), e questi funzionano bene. – hackbod

risposta

0

Prova ad aggiungere FLAG_ACTIVITY_BROUGHT_TO_FRONT all'intento.

+0

Ciao grazie per il tuo aiuto, ho provato ad aggiungerlo all'intento prima di avviarlo ma non sembra fare alcuna differenza. – Boardy

1

Si prega di provare questo funziona su ICS per me.

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(companyURL)); 
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(intent); 
+0

Grazie per il vostro aiuto. Questo sta facendo la stessa cosa che ho avuto che il browser sarebbe apparso la prima volta. Ma la seconda volta il browser aprirà la pagina in background.L'unica differenza è che prima andrebbe di nuovo nel menu di avvio dove ora torna alla schermata principale. – Boardy

+0

prova ad aggiungere questo flag 'FLAG_ACTIVITY_CLEAR_TOP' – Sunny

+0

Ancora facendo la stessa cosa. Un po 'strano perché ho solo questo problema in ICS e nessun'altra versione – Boardy

1

In genere non è necessario la categoria CATEGORY_BROWSABLE. Provate il seguente invece:

Intent intent = new Intent(); 
intent.setAction(Intent.ACTION_VIEW); 
intent.setData(Uri.parse(companyURL)); 
startActivity(intent); 

Infatti, la documentazione sembra suggerire CATEGORY_BROWSABLE è destinato ad essere utilizzato nella direzione opposta (browser per la vostra applicazione):

attività che possono essere tranquillamente invocati da un browser deve supportare questa categoria. Ad esempio, se l'utente sta visualizzando una pagina Web o una e-mail e fa clic su un link nel testo, l'Intent generato eseguirà quel link richiederà la categoria BROWSABLE, in modo che solo le attività che supportano questa categoria saranno considerate come possibili azioni .

http://developer.android.com/reference/android/content/Intent.html#CATEGORY_BROWSABLE

0

sto usando seguente codice e il suo lavoro bene con me, anche quando il browser è già in esecuzione in background.

Problemi correlati