Estou tentando chamar algumas javascriptfunções em uma htmlpágina em execução dentro de um android webview. Bem simples do que o código tenta fazer abaixo - no aplicativo Android, chame uma javascriptfunção com uma mensagem de teste, que inturn chama uma função java de volta no aplicativo Android que exibe a mensagem de teste via brinde.
A javascriptfunção se parece com:
function testEcho(message){
window.JSInterface.doEchoTest(message);
}
No WebView, tentei chamar javascriptas seguintes maneiras sem sorte:
myWebView.loadUrl("javascript:testEcho(Hello World!)");
mWebView.loadUrl("javascript:(function () { " + "testEcho(Hello World!);" + "})()");
Eu habilitei javascriptnoWebView
myWebView.getSettings().setJavaScriptEnabled(true);
// register class containing methods to be exposed to JavaScript
myWebView.addJavascriptInterface(myJSInterface, "JSInterface");
E aqui está a Javaclasse
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();
}
}
Passei muito tempo pesquisando o que eu estava fazendo de errado. Todos os exemplos que encontrei usam essa abordagem. Alguém vê algo errado aqui?
Edit: Existem vários outros javascriptarquivos externos sendo referenciados e usados no html, eles poderiam ser o problema?
@JavascriptInterfacedecorador nos métodos Java que deseja disponibilizar para o WebView por meio da interface JavaScript.
myWebView.loadUrl("javascript:testEcho('Hello World!')");, entendo que você já anexou o arquivo html a essa visualização na web. Você poderia me dizer como você fez isso?