¿Cómo llamar a una función javascript directamente de una actividad en Android?
Quise saber si hay alguna manera que puedo llamar una función de JavaScript de la actividad nativa de Androide.
Me encontré con:
- Navegador Android: touchcancel está siendo disparado aunque touchmove tiene preventDefault
- Activar evento de clic en la etiqueta de enlace en JS para Android e iPhone
- Cómo personalizar o cambiar Default crosswalk decompress dialogue?
- Android: no se puede obtener javascript para trabajar en WebView incluso con setJavaScriptEnabled (true)
- Problema con meta viewport y Android
webView.loadUrl("javascript:hello()");
Pero no funcionó para mí.
Además, ¿cómo sabrá Android en qué página html reside esta función JavaScript?
- ¿Cómo comunicarse entre WebView y JavaScript?
- Creación de una aplicación móvil multiplataforma para SharePoint 2013
- Phonegap 3.0 - Android: Barra de desplazamiento nativa no visible
- Los vínculos / iconos que se generan en codebehind no aparecen en ciertos dispositivos móviles
- Phonegap - manejo de la notificación push una vez que he dejado el ámbito del índice con window.location.replace
- Escotado infinito con marco iónico
- React-nativo de Android WebView manejar clic en Url antes de cargar
- Cómo llamar al método Javascript desde la vista web en Android
Android solo puede llamar al método javascript si una página html está cargada en webView
webView.loadUrl("javascript:hello()");
Llamará método hello escrito en la página html sólo si la página que contiene este método está cargada actualmente en el control de vista web
primera llamada
webview.loadUrl("Your html page url");
luego llame
webView.loadUrl("javascript:hello()");
En caso de que alguien tiene problemas con esto como lo hice, necesita llamar a su función javascript después de que la página ha terminado de cargar de lo contrario el javascript no se llamará:
webviewer.loadUrl("file:///android_asset/mypage.html"); webviewer.setWebViewClient(new WebViewClient() { public void onPageFinished(WebView view, String url) { webviewer.loadUrl("javascript:hello()"); } });
Antes de usar JavaScript, primero tiene que comprobar que Javascript está habilitado o no en su aplicación usando "getJavaScriptEnabled ()" (Su FALSO por defecto). Y el método loadUrl () sólo se utiliza para cargar la página actual. Su no hace nada relacionado con JavaScript.
EJEMPLO:
Configuración de WebView
// inicialización de webview
webView = (WebView) findViewById(R.id.webView); WebSettings webSettings = webView.getSettings(); webSettings.setJavaScriptEnabled(true);
Cómo cargar HTML en WebView
webView.loadUrl("file:///android_asset/testhtml.html");
Configuración de WebChromeClient en webView
webView.setWebChromeClient(new MyJavaScriptChromeClient());
La clase MyJavaScriptChromeClient Aquí tenemos que anular el método onJsAlert () para manejar la función de alerta de JavaScript.
private class MyJavaScriptChromeClient extends WebChromeClient { @Override public boolean onJsAlert(WebView view, String url, String message,final JsResult result) { //handle Alert event, here we are showing AlertDialog new AlertDialog.Builder(MainWebViewActivity.this) .setTitle("JavaScript Alert !") .setMessage(message) .setPositiveButton(android.R.string.ok, new AlertDialog.OnClickListener() { public void onClick(DialogInterface dialog, int which) { // do your stuff result.confirm(); } }).setCancelable(false).create().show(); return true; } }
Mi archivo Html: testhtml.html:
<html> <body > <div onclick="alert('hello')"> Click Me !! </div> </body> </html>
Cómo funciona ? Cuando el texto "Click Me !!" En el WebView se hace clic, se llama a la función android onJsAlert (vista WebView, URL de cadena, mensaje de cadena, resultado final de JsResult). El parámetro de alerta se copia en el parámetro de mensaje de la función onJsAlert. Y el resto de la manipulación se hace allí. Aquí estamos mostrando un AlertDialog.
- Transición de la tarjeta Flip entre dos actividades Android
- Barra de herramientas setNavigationOnClickListener breaks ActionbarDrawerToggle funcionalidad