¿Es posible usar JavaScript para cerrar el navegador Android?

Quiero poner un botón de "cerrar" en una página web (nuestro cliente quiere hacer eso)
y cuando hago clic en este botón, quiero cerrar el navegador (no la pestaña actual, pero "navegador" en el navegador de Android, IE, Firefox, Chrome, etc).

He buscado y encontrado un método: window.close() pero parece que sólo funcionan en IE.
Mi pregunta es:

¿Hay alguna manera de cerrar el navegador de Android con Javascript?

Nope – y eso es una buena cosa: la página web no tiene ningún problema con el propio navegador ("espera, ¿dónde fue mi ventana? Tenía como 30 pestañas en el mismo – poof, ido!"), Por no mencionar una vulnerabilidad flagrante:

  1. inserte un XSS en legitpage.example.com
  2. cuando se activa, abra una ventana pop-under de evilpage.example.net, que se parece a legitpage.example.com
  3. cierre legitpage.example.com (si 2 & 3 son lo suficientemente rápido, el usuario puede ser engañado que xe todavía en legitpage.example.com)
  4. ???
  5. ¡Lucro!

Esto no es posible, y nunca lo será.

Bueno, un simple trabajo alrededor de esto sería crear una actividad con el control de pantalla completa de WebView, mostrar su contenido HTML (local o de Internet) y añadir un botón para cerrar esta ventana, con una devolución de llamada a Java para cerrar esta actividad. Aquí está todo el código que usted necesitaría:

archivo de diseño browser.xml:

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#404040" android:id="@+id/mainLayout" > <WebView android:id="@+id/webkit" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_marginBottom="2dp" android:layout_weight="1" android:scrollbars="vertical" android:visibility="visible" /> </LinearLayout> 

Actividad myBrowser.java (recuerde declararla también en AndroidManifest.xml):

 public class myBrowser extends Activity { protected WebView webView; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // if you don't want app title bar... requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.browser); webView = (WebView) findViewById(R.id.webkit); WebSettings webSettings = webView.getSettings(); webSettings.setJavaScriptEnabled(true); webView.addJavascriptInterface(new MyJavaCallback(), "JCB"); // get the URL to navigate to, sent in Intent extra Intent intent = getIntent(); if (intent != null) { String sUrl = intent.getStringExtra("url"); if (sUrl != null) webView.loadUrl(sUrl); } } final public class MyJavaCallback { // this annotation is required in Jelly Bean and later: @JavascriptInterface public void finishActivity() { finish(); } } } 

El código para iniciar esta actividad en otro lugar de la aplicación sería:

  Intent intent = new Intent(context, myBrowser.class); intent.putExtra("url", "http://www.someaddress.com/somepage.html"); startActivity(intent); 

y su página web somepage.html podría tener un botón "Cerrar" con el código siguiente:

 <button onclick="JCB.finishActivity()">Close</button> 

También puede agregar otros botones y devoluciones de llamada para que hagan lo que necesita en su código Java de Android. Las llamadas de otra manera – desde Java a JavaScript en la página, también son posibles, por ejemplo:

 webView.loadUrl("javascript:functionName(params)"); 

Además, si desea mostrar contenido de Internet, no un archivo o una cadena local en su control WebView, recuerde agregar a AndroidManifest.xml el permiso necesario:

 <uses-permission android:name="android.permission.INTERNET" /> 

Greg

El navegador de Android permite que JavaScript cierre sólo las ventanas emergentes. Por lo tanto, no hay manera de cerrar la ventana, a menos que se haya creado como una ventana emergente.

window.close() funciona realmente para aplicaciones web que se agregaron a la pantalla de inicio (con Chrome Beta).

Cierra la aplicación de forma limpia y vuelve a la pantalla de inicio.

  • ¿Cómo admitir la visualización de PDF para todos los navegadores móviles?
  • Porcentaje de codificación en un URI
  • El botón de retroceso después de que el deeplink entre en la aplicación no vuelve a donde vino
  • Android AVD Emulador Herramientas de desarrollo para el navegador móvil?
  • ¿Se admite multi-touch / gestos en todos los navegadores de teléfonos inteligentes (Android e iOS)?
  • El navegador predeterminado de Android crea la barra de desplazamiento horizontal para diseño responsivo
  • ¿Cómo puedo supervisar y obtener tráfico http en una aplicación Android?
  • ¿Cómo puedo acceder a mi localhost a través del teléfono Android?
  • No se puede detectar Android en el servidor web
  • Entrada directa de voz / voz en el navegador móvil
  • Browser.BOOKMARKS_URI no funciona en Android Studio
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.