Sto provando a chiamare alcune javascriptfunzioni che si trovano in una htmlpagina all'interno di un android webview. Piuttosto semplice ciò che il codice tenta di fare di seguito: dall'app Android, chiama una javascriptfunzione 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 javascriptfunzione è simile a:
function testEcho(message){
window.JSInterface.doEchoTest(message);
}
Da WebView, ho provato a chiamare javascripti seguenti modi senza fortuna:
myWebView.loadUrl("javascript:testEcho(Hello World!)");
mWebView.loadUrl("javascript:(function () { " + "testEcho(Hello World!);" + "})()");
Ho abilitato javascriptsulWebView
myWebView.getSettings().setJavaScriptEnabled(true);
// register class containing methods to be exposed to JavaScript
myWebView.addJavascriptInterface(myJSInterface, "JSInterface");
Ed ecco la 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();
}
}
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 javascriptfile esterni a cui viene fatto riferimento e utilizzati in html, potrebbero essere il problema?
@JavascriptInterfacedecoratore 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?