Android WebView addJavascriptInterface无效原因

今天再写Android WebView 的时候,发现addJavascriptInterface里面的方法在JS里无法被调用,折腾了一个中午,才发现是因为在Android4.2以后,为了安全问题,需要在方法前加入“@JavascriptInterface”注解。

如下:

1
2
3
4
5
6
7
8
9
10
11
webSettings.setJavaScriptEnabled(true);
mWebView.addJavascriptInterface(new Object() {
@JavascriptInterface
public void clickMoreOnAndroid() {
mHandler.post(new Runnable() {
public void run() {
Toast.makeText(MainActivity.this, "测试!", Toast.LENGTH_SHORT).show();
}
});
}
}, "demo");

加入注解后,WebView 中JS 调用成功,调用方法:

1
<a onclick="window.demo.clickMoreOnAndroid()">

记录下来,下次碰到不用再折腾。。。