2011-12-29 14 views
5

Tengo un programa que he creado para Android 1.6 en adelante y he estado haciendo pruebas para asegurar que el programa funcione bien con el nuevo Ice Cream Sandwich (Android 4).Ejecutando el navegador en Ice Cream Sandwich

Todo en la aplicación funciona bien, excepto que cuando el usuario realiza una determinada tarea, se supone que debe iniciar automáticamente el navegador de Android. Sin embargo, por alguna razón, parece cargarlo en segundo plano y mantener mi aplicación mostrada, que no es lo que quiero que haga.

En cada otra versión de Android cuando ejecuto el código para iniciar el navegador, el navegador aparece en la parte superior de la pantalla, lo que provoca que mi aplicación esté en segundo plano y así es como quería que funcionara.

A continuación se muestra el código que tengo que iniciar el navegador

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

El companyURL es una variable que estoy utilizando para analizar la URL en el navegador.

Gracias por cualquier ayuda que pueda proporcionar.

ACTUALIZACIÓN acabo de descubrir que si el navegador no se está ejecutando actualmente (es decir, no se ha cargado anteriormente) cuando mi aplicación se inicia el navegador lo lleva a la parte delantera. Sin embargo, una vez que el navegador se cargó previamente, cuando mi aplicación lo carga nuevamente, lo carga en segundo plano.

+0

Debe haber algo más en juego que lo que está mostrando aquí. Todo tipo de cosas en la plataforma y las aplicaciones estándar inician el navegador con ACTION_VIEW y un URI (como hacer clic en un enlace en las aplicaciones de correo electrónico o Gmail), y funcionan bien. – hackbod

Respuesta

0

Intente agregar la bandera FLAG_ACTIVITY_BROUGHT_TO_FRONT al intento.

+0

Hola, gracias por su ayuda, intenté agregar eso a la intención antes de comenzar, pero no parece hacer ninguna diferencia. – Boardy

1

Por favor, intente esto, está trabajando en ICS para mí.

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

Gracias por su ayuda. Esto está haciendo lo mismo que tuve que el navegador aparecería la primera vez. Pero la segunda vez el navegador abriría la página en segundo plano.La única diferencia es antes de que vaya al menú del iniciador nuevamente, ya que ahora regresa a la pantalla de inicio. – Boardy

+0

intente agregar esta bandera 'FLAG_ACTIVITY_CLEAR_TOP' – Sunny

+0

Todavía haciendo lo mismo. Es extraño por qué solo estoy teniendo este problema en ICS y no hay otra versión – Boardy

1

Normalmente no necesita la categoría CATEGORY_BROWSABLE. Pruebe lo siguiente en su lugar:

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

De hecho, la documentación parece sugerir CATEGORY_BROWSABLE está destinado a ser utilizado en la dirección opuesta (navegador a su aplicación):

Actividades que se pueden invocar de forma segura desde un navegador debe admitir esta categoría. Por ejemplo, si el usuario está viendo una página web o un correo electrónico y hace clic en un enlace en el texto, el Intento generado ejecutar ese enlace requerirá la categoría BROWSABLE, de modo que solo las actividades que apoyan esta categoría serán consideradas como posibles acciones .

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

0

estoy usando siguiente código y su funcionamiento muy bien conmigo, incluso cuando el navegador ya se está ejecutando en segundo plano.

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com")); 
startActivity(intent); 
Cuestiones relacionadas