Sto provando a chiamare alcune javascript
funzioni che si trovano in una html
pagina all'interno di un android webview
. Piuttosto semplice ciò che il codice tenta di fare di seguito: dall'app Android, chiama una javascript
funzione con un messaggio di prova, che a sua volta richiama una funzione Java nell'app Android che visualizza il messaggio di prova tramite toast.
La javascript
funzione è simile a:
function testEcho(message){
window.JSInterface.doEchoTest(message);
}
Da WebView, ho provato a chiamare javascript
i seguenti modi senza fortuna:
myWebView.loadUrl("javascript:testEcho(Hello World!)");
mWebView.loadUrl("javascript:(function () { " + "testEcho(Hello World!);" + "})()");
Ho abilitato javascript
sulWebView
myWebView.getSettings().setJavaScriptEnabled(true);
// register class containing methods to be exposed to JavaScript
myWebView.addJavascriptInterface(myJSInterface, "JSInterface");
Ed ecco la 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();
}
}
Ho passato molto tempo a cercare su Google cosa potrei fare di sbagliato. Tutti gli esempi che ho trovato usano questo approccio. Qualcuno vede qualcosa di sbagliato qui?
Modifica: ci sono molti altri javascript
file esterni a cui viene fatto riferimento e utilizzati in html
, potrebbero essere il problema?
@JavascriptInterface
decoratore sui metodi Java che si desidera rendere disponibili per WebView tramite l'interfaccia JavaScript.
myWebView.loadUrl("javascript:testEcho('Hello World!')");
ho capito che hai già allegato il file html a quella vista web. Potresti dirmi come hai fatto?