Estoy tratando de llamar a algunas javascriptfunciones que se encuentran en una htmlpágina que se ejecuta dentro de un android webview. Bastante simple lo que el código intenta hacer a continuación: desde la aplicación de Android, llame a una javascriptfunción con un mensaje de prueba, que a su vez llama a una función de Java en la aplicación de Android que muestra el mensaje de prueba a través de una tostada.
La javascriptfunción se ve así:
function testEcho(message){
window.JSInterface.doEchoTest(message);
}
Desde WebView, he intentado llamar a javascriptlas siguientes formas sin suerte:
myWebView.loadUrl("javascript:testEcho(Hello World!)");
mWebView.loadUrl("javascript:(function () { " + "testEcho(Hello World!);" + "})()");
Lo habilité javascripten elWebView
myWebView.getSettings().setJavaScriptEnabled(true);
// register class containing methods to be exposed to JavaScript
myWebView.addJavascriptInterface(myJSInterface, "JSInterface");
Y aquí está la Javaclase
public class JSInterface{
private WebView mAppView;
public JSInterface (WebView appView) {
this.mAppView = appView;
}
public void doEchoTest(String echo){
Toast toast = Toast.makeText(mAppView.getContext(), echo, Toast.LENGTH_SHORT);
toast.show();
}
}
He pasado mucho tiempo buscando en Google para ver qué puedo estar haciendo mal. Todos los ejemplos que he encontrado utilizan este enfoque. ¿Alguien ve algo mal aquí?
Editar: Hay varios otros javascriptarchivos externos a los que se hace referencia y se usan en el html, ¿podrían ser el problema?
@JavascriptInterfacedecorador en los métodos Java que desea poner a disposición de WebView a través de la interfaz de JavaScript.
myWebView.loadUrl("javascript:testEcho('Hello World!')");, entiendo que ya ha adjuntado el archivo html a esa vista web. ¿Podrías decirme cómo hiciste eso?