xwyang
xwyang
  • 发布:2017-09-26 18:01
  • 更新:2018-12-20 11:07
  • 阅读:631

JSUtil.execCallback 插件调用 这个值返不回去,

分类:5+ SDK

String result = cardInfo.getAllinfo();

            String CallBackID =  array.optString(0);  

            JSUtil.execCallback(pWebView, CallBackID, result, JSUtil.OK, false);
2017-09-26 18:01 分享
已邀请:
小权

小权

今天也遇到这样的问题,我将OCR获取到的内容result(String类型),直接

JSUtil.execCallback(pWebView, CallBackID, result, JSUtil.OK, false);  

js端接收不到
然后我改成

JSUtil.execCallback(pWebView, CallBackID, “成功”, JSUtil.OK, false);  

js端能接收到
追踪JSUtil.execCallback的实现:

/** @deprecated */  
        @Deprecated  
        public static void execCallback(IWebview var0, String var1, String var2, int var3, boolean var4, boolean var5) {  
                if (var0 != null) {  
                        String var6 = "(function(w,n){try{var plus=((w.__html5plus__&&w.__html5plus__.isReady)?w.__html5plus__:(n.plus&&n.plus.isReady)?n.plus:window.plus);var result= {};result.status = %d;result.message = " + (var4 ? "%s" : "'%s'") + ";result.keepCallback = " + var5 + ";plus && plus.bridge.callbackFromNative('%s', result);}catch(e){console.error(e.stack)};})(window,navigator);";  
                        var6 = String.format(var6, var3, var2, var1);  
                        var0.executeScript(var6);  
                }  

        }  

最后返回都是拼接js代码执行的,注意这句:var4 ? "%s" : "'%s'",应该是我们返回的字符串有换行符之类的吧。
我的解决方案是将结果放到JSONObject里返回。

要回复问题请先登录注册