WebView使用中js调用java代码时targetSdkVersion大于17时,无法调用成功

来源:互联网 发布:五线谱输入软件 编辑:程序博客网 时间:2024/05/22 00:47

[原]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())");

0 0