Ich versuche, einige javascript
Funktionen aufzurufen , die auf einer html
Seite in einem ausgeführt werden android webview
. Ziemlich einfach, was der Code unten versucht - rufen Sie in der Android-App eine javascript
Funktion mit einer Testnachricht auf, die eine Java-Funktion in der Android-App zurückruft, die die Testnachricht per Toast anzeigt.
Die javascript
Funktion sieht aus wie:
function testEcho(message){
window.JSInterface.doEchoTest(message);
}
In WebView habe ich javascript
ohne Glück versucht, die folgenden Methoden aufzurufen :
myWebView.loadUrl("javascript:testEcho(Hello World!)");
mWebView.loadUrl("javascript:(function () { " + "testEcho(Hello World!);" + "})()");
Ich habe javascript
auf dem aktiviertWebView
myWebView.getSettings().setJavaScriptEnabled(true);
// register class containing methods to be exposed to JavaScript
myWebView.addJavascriptInterface(myJSInterface, "JSInterface");
Und hier ist die Java
Klasse
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 javascript
Dateien, auf die verwiesen und die in verwendet html
werden. Könnten sie das Problem sein?
@JavascriptInterface
Decorator 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?