lhyh
lhyh
  • 发布:2017-06-21 18:40
  • 更新:2017-06-22 14:46
  • 阅读:1889

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

分类:5+ SDK

详细问题描述
离线打包之后,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')");  
                }  

            }  
        }

js层

var receiveResult = function(scanResult) {  
   alert(scanResult);  
};

问题在java层中,

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

这里,当我传递较长的数字,比如身份证号码时
java层拿到的scanResult,值是"1511111198807175990",
通过上面这行代码,js层alert出来的scanResult值变成了"1511111198807176000"。不知道什么问题,如果我处理scanResult的时候像下面这样,

scanResult = "z" + scanResult;

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

重现步骤
[步骤]
[结果]
[期望]

运行环境
安卓手机系统 5.1.1
安卓5+SDK 1.9.9.24608

2017-06-21 18:40 负责人:无 分享
已邀请:

最佳回复

lhyh

lhyh (作者) - 目前就职成都

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

lhyh

lhyh (作者) - 目前就职成都

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

weblist.get(i).executeScript("javascript:receiveResult('z1234567')");
lhyh

lhyh (作者) - 目前就职成都

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

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

该问题目前已经被锁定, 无法添加新回复