¿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:
- ¿Puedo acceder mediante programación a los sensores de un smartphone a través del navegador y JavaScript?
- Android Descargar Intent
- Cómo enfocar un campo de entrada en el navegador de Android a través de javascript o jquery
- Configuración de visor de Android "user-scalable = no" rompe el nivel de ancho / zoom de la ventana de visualización
- Cómo implementar mi propio esquema URI en Android
¿Hay alguna manera de cerrar el navegador de Android con Javascript?
- Página web del navegador web de Android
- Abrir archivo html local con el navegador de Android
- ¿Cómo evitar que el navegador Google Chrome android muestre la lupa cuando los usuarios hacen clic en un botón?
- Cómo abrir el navegador predeterminado
- Android: lanzar google map a través de url web
- SingleCursorHandlerTouchEvent -getEditableSupport FASLE error
- La forma más fácil de tener el botón de abrir el navegador a la URL específica
- Border-radius no funciona en el moderno navegador nativo de Android
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:
- inserte un XSS en legitpage.example.com
- cuando se activa, abra una ventana pop-under de evilpage.example.net, que se parece a legitpage.example.com
- 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)
- ???
- ¡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 ejecutar código después de un retraso en Xamarin Android
- Lectura de archivos desde almacenamiento externo de Android SDK Emulator