为了账号安全,请及时绑定邮箱和手机立即绑定

Android在WebView中调用JavaScript函数

Android在WebView中调用JavaScript函数

互换的青春 2019-06-24 10:35:49
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!);" + "})()");我确实让javascript在WebViewmyWebView.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会不会是问题所在?
查看完整描述

3 回答

?
侃侃无极

TA贡献2051条经验 获得超10个赞

我发现了问题所在:在testEcho()参数中缺少引号。我就是这样接到工作电话的:

myWebView.loadUrl("javascript:testEcho('Hello World!')");


查看完整回答
反对 回复 2019-06-24
?
叮当猫咪

TA贡献1776条经验 获得超12个赞

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


查看完整回答
反对 回复 2019-06-24
  • 3 回答
  • 0 关注
  • 2111 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信