J'essaie d'appeler certaines javascript
fonctions assis sur une html
page en cours d'exécution dans un android webview
. Assez simple ce que le code essaie de faire ci-dessous - à partir de l'application Android, appelez une javascript
fonction avec un message de test, qui appelle à son tour une fonction java dans l'application Android qui affiche le message de test via toast.
La javascript
fonction ressemble à:
function testEcho(message){
window.JSInterface.doEchoTest(message);
}
Depuis WebView, j'ai essayé d'appeler les javascript
méthodes suivantes sans succès:
myWebView.loadUrl("javascript:testEcho(Hello World!)");
mWebView.loadUrl("javascript:(function () { " + "testEcho(Hello World!);" + "})()");
J'ai activé javascript
leWebView
myWebView.getSettings().setJavaScriptEnabled(true);
// register class containing methods to be exposed to JavaScript
myWebView.addJavascriptInterface(myJSInterface, "JSInterface");
Et voici 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();
}
}
J'ai passé beaucoup de temps à faire des recherches pour voir ce que je fais mal. Tous les exemples que j'ai trouvés utilisent cette approche. Quelqu'un voit-il quelque chose de mal ici?
Edit: Il existe plusieurs autres javascript
fichiers externes référencés et utilisés dans le html
, pourraient-ils être le problème?
@JavascriptInterface
décorateur sur les méthodes Java que vous souhaitez mettre à la disposition de WebView via l'interface JavaScript.
myWebView.loadUrl("javascript:testEcho('Hello World!')");
je comprends que vous avez déjà joint le fichier html à cette vue Web. Pourriez-vous me dire comment vous avez fait ça?