Estou tentando chamar algumas javascript
funções em uma html
página em execução dentro de um android webview
. Bem simples do que o código tenta fazer abaixo - no aplicativo Android, chame uma javascript
funçã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 javascript
função se parece com:
function testEcho(message){
window.JSInterface.doEchoTest(message);
}
No WebView, tentei chamar javascript
as seguintes maneiras sem sorte:
myWebView.loadUrl("javascript:testEcho(Hello World!)");
mWebView.loadUrl("javascript:(function () { " + "testEcho(Hello World!);" + "})()");
Eu habilitei javascript
noWebView
myWebView.getSettings().setJavaScriptEnabled(true);
// register class containing methods to be exposed to JavaScript
myWebView.addJavascriptInterface(myJSInterface, "JSInterface");
E aqui está a Java
classe
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 javascript
arquivos externos sendo referenciados e usados no html
, eles poderiam ser o problema?
@JavascriptInterface
decorador 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?