【已处理】离线打包,java层向js层传值异常

详细问题描述

离线打包之后,java层调用指定的webview中的js方法

java层

        ArrayList<IWebview> weblist = SDK.obtainAllIWebview();

for (int i = 0; i < weblist.size(); i++) {

if (weblist.get(i).getOriginalUrl().contains("main.html") {

if (scanResult != null && !scanResult.equals("")) {

scanResult = "1" + scanResult;

Log.d(TAG, scanResult);

weblist.get(i).executeScript(

"javascript:receiveResult(" + scanResult+ ")");

} else {

Log.d(TAG, "没结果");

weblist.get(i).executeScript(

"javascript:receiveResult('test')");

}



}

}

\n

js层

var receiveResult = function(scanResult) {

alert(scanResult);

};

\n

问题在java层中,

weblist.get(i).executeScript("javascript:receiveResult(" + scanResult+ ")");

\n

这里,当我传递较长的数字,比如身份证号码时

java层拿到的scanResult,值是"1511111198807175990",

通过上面这行代码,js层alert出来的scanResult值变成了"1511111198807176000"。不知道什么问题,如果我处理scanResult的时候像下面这样,

scanResult = "z" + scanResult;

\n

那么java层最终拿到的scanResult值是"z511111198807175990",但是js端就接收不到值了……

[内容]

重现步骤

[步骤]

[结果]

[期望]

运行环境

安卓手机系统 5.1.1

安卓5+SDK 1.9.9.24608



2017-06-21 18:40 添加评论 分享
已邀请:

最佳回复

1

lhyh - 目前就职成都

赞同来自: DCloud_客服_Trust

感谢大佬@DCloud_客服Trust 和@DCloud_SDK骁骑 ,在他们耐心协助下,解决了问题
是我自己的scanResult里面带了个换行符,导致从java层传过去的时候,js层解析挂了


0

lhyh - 目前就职成都

赞同来自:

然后如果写死,比如这种,js端又能接收到了

weblist.get(i).executeScript("javascript:receiveResult('z1234567')");
\n
0

lhyh - 目前就职成都

赞同来自:

改了,还是gg,如果写死值,就字符串啊数字啊都过来了

//GG
//scanResult.toString()
weblist.get(i).executeScript("javascript:receiveResult('" + scanResult.toString() + "')");
\n
//传的飞起
weblist.get(i).executeScript("javascript:receiveResult('12345哈哈哈哈哈哈哈')");
weblist.get(i).executeScript("javascript:receiveResult('z66666666666666666666666661111221990')");
\n

要回复问题请先登录注册