您的位置:首页 > 移动开发 > Android开发

android与js交互,以及webview漏洞修复问题

2017-03-08 10:16 555 查看

一、webview与android进行数据交互

1.js调用android中的方法:

需要加上这一句话:

webView.addJavascriptInterface(new JsInteration(), "android");


JsInteration为一个类:

public class JsInteration {
@JavascriptInterface
public void back() {
Bitmap bitmap = EncodingUtils.createQRCode(strResult, 1000, 1000);
showPopWindow(bitmap);
}
}


我这里做的工作是,在html页面上点击,将一些数据传到android端,然后通过android绘制一个二维码图片,并且通过Popwindow继续展示。类似于点击图片放大。

在js中的使用方法是:

function changeSize() {
//调用Java的back()方法
window.android.back();
}


2.android调用js方法

在js中定义的funcation如下:

function setwcjyhdssglzmbh(a) {
document.getElementById("wcjyhdssglzmbh").innerHTML = a;
}


在android中用如下方法进行引用:

webView.evaluateJavascript("setwcjyhdssglzmbh('" + strResultList[1] + "')", null);


这样就完成了android端的数据传值html页面,并且进行显示。

Tips,我在使用的时候js只能写在html页面中,不能单独写成一个Js,html进行引用。如果有好的方法,或者我这个说的有问题烦请告诉我,谢谢。

3.关于使用Webview后,进行漏洞检测会出现高危漏洞的问题。

由于项目需求,必须要有交互,所以在使用之后送至腾讯、百度、阿里自动化检测工具进行安全漏洞检测,都会出现几个关于webview的漏洞,



对于第一个问题,如果你一定使用到了这个方法,可以在页面加载的时候加上这个语句

if (Build.VERSION.SDK_INT < 19) {
TipsToast.ToastShow(WcjyzmActivity.this, "对不起!系统版本过低,不支持该功能!");
WcjyzmActivity.this.finish();
}


再网上查了资料,说是在api17之后的webview已经修补了这个漏洞。

Tips,如果你需要android调用js方法的话,最低的api为19,所以我直接判断在19之后就不允许访问该页面。

但是,就算是这样 -。- 该报漏洞的还是会报,(:з」∠)

所以我就尝试了另外一种方法,是用crosswalk,可以参考这俩大牛的

http://www.mobibrw.com/2015/1934

https://software.intel.com/zh-cn/articles/v

文章有点久远,不过确实可以实现,android studio把作为android library,就可以当成webview使用了,唯一一个缺点。。。。就是加入了之后apk贼大啊!!!会大15MB~20MB啊!╮(╯▽╰)╭ 无奈 不过唯一好的就是,漏洞检测不报了,强迫症的福利 (:з」∠)

关于第二个问题,简单加上这几句代码就好了,

webView.removeJavascriptInterface("searchBoxJavaBridge_");
webView.removeJavascriptInterface("accessibilityTraversal");
webView.removeJavascriptInterface("accessibility");


本人还是只菜鸟 -。-

以上的如果有错误或者有问题,都可以跟我说下,相互学习。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: