传递Android webview JS接口方法作为回调函数

时间:2017-08-07 11:53:13

标签: javascript android android-webview

我有以下android代码:

private class MyJavaInterface {
    @android.webkit.JavascriptInterface
    public void call(String number) {
        Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:" + number));

        startActivity(intent);
    }
}

...

mWebView.addJavascriptInterface(new MyJavaInterface(), "MyInterface");

这个JS代码正常工作:

MyInterface.call(number);

这不是:

var call = MyInterface.call;
call(number);

我做错了什么?

1 个答案:

答案 0 :(得分:0)

  

这个JS代码正常工作:

     

MyInterface.call(数);

是的,这样可以正常工作,因为Android会自动找到类和唯一被注释的公共方法。

对于你的情况

MyInterface.call(number) -> new MyJavaInterface().call(number)

但第二个不起作用,

MyInterface.call -> new MyJavaInterface().call - there is no public variable in your class and also there is no support for variable in addJavascriptInterface

注意:Refer

  

对于针对API级别 JELLY_BEAN_MR1 及以上的应用,仅限   使用JavascriptInterface注释的公共方法可以是   从JavaScript访问。适用于API级别的应用程序    JELLY_BEAN或以下,所有公共方法(包括继承的方法)   可以访问