Android在WebView中调用JavaScript函数

Android在WebView中调用JavaScript函数

我想打电话给一些javascript坐在一个html中运行的页。android webview..下面代码试图做的非常简单-从Android应用程序中,调用javascript函数具有一个测试消息,该函数反过来在Android应用程序中调用一个java函数,该应用程序通过TOS显示测试消息。

这个javascript函数看起来如下:

function testEcho(message){
     window.JSInterface.doEchoTest(message);}

在WebView中,我尝试调用javascript没有运气的方式有以下几种:

myWebView.loadUrl("javascript:testEcho(Hello World!)");mWebView.loadUrl("javascript:(function () { " + "testEcho(Hello World!);" + "})()");

我确实让javascriptWebView

myWebView.getSettings().setJavaScriptEnabled(true);// register class containing methods to be exposed to JavaScriptmyWebView.
addJavascriptInterface(myJSInterface, "JSInterface");

这里是Java班级,等级

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();
    }}

我花了很多时间搜索,看看我可能做错了什么。我发现的所有例子都使用这种方法。有人看到这里有什么不对劲吗?

编辑:还有其他几个外部的javascript中引用和使用的文件。html会不会是问题所在?


互换的青春
浏览 2112回答 3
3回答

侃侃无极

我发现了问题所在:在testEcho()参数中缺少引号。我就是这样接到工作电话的:myWebView.loadUrl("javascript:testEcho('Hello World!')");

叮当猫咪

从KitKat开始,请使用index ateJavascript方法代替loadUrl调用javascript函数,如下所示    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) {         webView.evaluateJavascript("enable();", null);     } else {         webView.loadUrl("javascript:enable();");     }
打开App,查看更多内容
随时随地看视频慕课网APP