[原]WebView使用中js调用java代码时targetSdkVersion大于17时,无法调用成功
2014-9-22阅读464 评论2
开发过程中需要使用webview加载一个网络图片并在点击图片时有相应的动作,由于webview截获了一切动作事件,使用js调用java本地代码的方式来完成需求,在使用时,发现在use-sdk中配置android:targetSdkVersion大于17时,js不能调用到java代码,
修改方法有两个:
1.修改android:targetSdkVersion="10",这个只能为一时的解决方案,
2. 查找官方文件:说在17以上需要添加一个接口JavascriptInterface才能用,即在js调用的java代码上方加上JavascriptInterface的注解,同时,在混淆代码时,注意不要混淆JavascriptInterface的注解,否则也会出现js不能调用java代码的情况发生。(-keepattributes *Annotation*)
1
2
3
4
5
6
7
|
class
JsObject {
@JavascriptInterface
public
String toString() {
return
"injectedObject"
; }
}
webView.addJavascriptInterface(
new
JsObject(),
"injectedObject"
);
webView.loadData(
""
,
"text/html"
,
null
);
webView.loadUrl(
"javascript:alert(injectedObject.toString())"
);
|