Ich versuche, einige javascriptFunktionen aufzurufen , die auf einer htmlSeite in einem ausgeführt werden android webview. Ziemlich einfach, was der Code unten versucht - rufen Sie in der Android-App eine javascriptFunktion mit einer Testnachricht auf, die eine Java-Funktion in der Android-App zurückruft, die die Testnachricht per Toast anzeigt.
Die javascriptFunktion sieht aus wie:
function testEcho(message){
window.JSInterface.doEchoTest(message);
}
In WebView habe ich javascriptohne Glück versucht, die folgenden Methoden aufzurufen :
myWebView.loadUrl("javascript:testEcho(Hello World!)");
mWebView.loadUrl("javascript:(function () { " + "testEcho(Hello World!);" + "})()");
Ich habe javascriptauf dem aktiviertWebView
myWebView.getSettings().setJavaScriptEnabled(true);
// register class containing methods to be exposed to JavaScript
myWebView.addJavascriptInterface(myJSInterface, "JSInterface");
Und hier ist die JavaKlasse
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();
}
}
Ich habe viel Zeit damit verbracht, zu googeln, um zu sehen, was ich möglicherweise falsch mache. Alle Beispiele, die ich gefunden habe, verwenden diesen Ansatz. Hat hier jemand etwas falsch gesehen?
Bearbeiten: Es gibt mehrere andere externe javascriptDateien, auf die verwiesen und die in verwendet htmlwerden. Könnten sie das Problem sein?
@JavascriptInterfaceDecorator für die Java-Methoden verwenden müssen, die Sie über die JavaScript-Oberfläche für WebView verfügbar machen möchten.
myWebView.loadUrl("javascript:testEcho('Hello World!')");, dass Sie die HTML-Datei bereits an diese Webansicht angehängt haben. Können Sie mir sagen, wie Sie das gemacht haben?