2011-08-25 14 views
8

Estoy tratando de abrir la ventana del navegador desde mi servicio con un enlace que se abre en la pestaña actual del navegador. cuando usoAndroid abre el navegador desde el servicio evitando varias pestañas

Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse("http://www.google.com")); 
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); 
context.startActivity(intent); 

Si el navegador se abrió y en primer plano antes de mi servicio se inicia la intención y el navegador se abre el enlace en la misma ventana/pestaña. Si el navegador se minimizó y el servicio inicia la intención, el navegador abre la página web en una nueva ventana/pestaña.

No puedo usar una vista web ya que debe estar en el navegador web y solo tratará con el navegador predeterminado. He revisado el hilo al Open an url in android browser, avoid multiple tabs pero no tenía una respuesta. También he intentado forzar el cierre del navegador, pero eso tampoco funciona.

¡Gracias por cualquier ayuda!

Respuesta

1

Si desea utilizar su aplicación al fuego que la intención .. así que llame a su aplicación directamente a través nombre del paquete cheque el siguiente código:

Intent in = getPackageManager().getLaunchIntentForPackage("com.package.myappweb"); 
in.putExtra("myURL","http://www.google.com"); 
in.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); 
startActivity(in); 

puede pasar a través de la URL intención y lo aplique en sus aplicación por:

String url=getIntent().getStringExtra("myURL"); 
if(url!=null){ 
/// launch app and use one tab for showing the webpage 
}else{ 
//launch app normally. 
} 

el código que mencionaste utilizó para usar como aplicación web-app ..que se mostrará la ventana emergente para usar para recoger cualquier navegador que lidiar con el enlace .. no sería para cualquier aplicación Quiero abrir el enlace

buena suerte,

1

La forma de evitar múltiples pestañas es el siguiente:

Intent intent = new Intent(Intent.ACTION_VIEW); 
intent.setData(uri); 
intent.putExtra(Browser.EXTRA_APPLICATION_ID, getPackageName()); 
startActivity(intent); 

El EXTRA_APPLICATION_ID contendrá un ID de su aplicación, y el navegador reciclará una pestaña que se abrió por su aplicación , en lugar de abrir una pestaña nueva. De esta forma, todas las páginas abiertas por su aplicación compartirán la misma pestaña, y no tendrá "inflación de pestañas" en el navegador.

Cuestiones relacionadas