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

本文介绍WebView与Android间的数据交互方式,包括JS调用Android方法及Android调用JS方法的具体实现。同时分享了如何解决交互带来的安全漏洞问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、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");

本人还是只菜鸟 -。-
以上的如果有错误或者有问题,都可以跟我说下,相互学习。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值