【问题标题】:Android webview JavascriptInterface doesn't have methodsAndroid webview JavascriptInterface 没有方法
【发布时间】:2018-04-12 10:20:03
【问题描述】:

我有一个这样的 Javascript 界面:

class JsInterface {
    @JavascriptInterface
    void onSendRequest(String url, String request, String response) {
        if (listener != null) {
            listener.onRequest(url, request, response);
        }
    }
}

在网络视图中我会这样做

addJavascriptInterface(new JsInterface(), "JsInterface");
getSettings().setJavaScriptEnabled(true);
setWebChromeClient(new WebChromeClient());

但是,当我查看 google 检查并输入 window.JsInterface 时,它只会输出空对象。这就是为什么我在尝试执行我的方法时收到错误TypeError: Object [object Object] has no method 'onSendRequest'。在某些设备上它可以正常工作,但在其他设备上却不行。可能是什么问题?

【问题讨论】:

    标签: javascript android webview


    【解决方案1】:

    根据文档

    注意:如果您将 targetSdkVersion 设置为 17 或更高版本,您必须将 @JavascriptInterface 注释添加到您希望 JavaScript 可用的任何方法(该方法也必须是公共的)。如果您不提供注释,则在 Android 4.2 或更高版本上运行时,您的网页将无法访问该方法。

    我对 Java 不是 100% 确定,但通常情况下,方法是私有的。

    参考 https://developer.android.com/guide/webapps/webview.html#BindingJavaScript

    所以对你来说是

    class JsInterface {
        @JavascriptInterface
       public void onSendRequest(String url, String request, String response) {
            if (listener != null) {
                listener.onRequest(url, request, response);
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2019-09-28
      • 2016-09-14
      • 2014-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多