我有以下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);
我做错了什么?
答案 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或以下,所有公共方法(包括继承的方法) 可以访问