【已解决】离线打包,原生层读取身份证信息,如何传递身份证中的照片数据到JS层

问题如题,硬件识别身份证。
通过widget 离线打包结合第三方SDK和5+SDK,在原生层当中获取到了身份证的信息,包含照片和姓名,民族等其他信息。问题来了,身份证照片是直接存储在身份证当中的,在原生处理后,得到的是bitmap类型的数据。但是不知道如何这个数据传给js层。

试过在原生层将bitmap类型的数据转成base64位的字符串,但是在原生层完成转换之后,原生层获取的这个字符串的长度在13000左右变化,直接传递给5+层的话,调用传递参数的方法,方法直接无任何反应。求大神指点。

也试过使用广播的方式传值,但是项目是 Widget方式集成HTML5+SDK方法的情况下,在js中使用下述代码注册广播接收器报错

//注册接收器,获取身份证照片  
mui.plusReady(function(){  
main = plus.android.runtimeMainActivity();    
var receiver = plus.android.implements('io.dcloud.feature.internal.reflect.BroadcastReceiver', {  
    onReceive:function(context, intent) { //实现onReceiver回调函数  
    plus.android.importClass(intent);  
    //获取广播中的参数                        
document.getElementById("flag").innerHTML=intent.getStringExtra("idcardBitMap");  
document.getElementById("photoImg").src=intent.getStringExtra("idcardBitMap");  
//销毁广播,视具体情况选择是否销毁广播  
    //main.unregisterReceiver(receiver);  
    }  
});  
var IntentFilter = plus.android.importClass('android.content.IntentFilter');  
var filter = new IntentFilter();  
filter.addAction("com.idcard.idcardBitMap"); //  
main.registerReceiver(receiver, filter); //注册监听   
})  

报错如下

03-07 20:06:52.061: E/InvProxy(10023): NativeObject.execMethod registerReceiver method ; params=[{"type":"object","value":"Invocation343747314"},{"type":"object","value":"JSB241520424412045"}]java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Class java.lang.reflect.Method.getReturnType()' on a null object reference  
2018-03-10 15:26 添加评论 分享
已邀请:
0

赵梦欢 - 专注前端,乐于分享!

赞同来自:

将 Bitmap 保存为图片,然后吧图片路径传到 JS 层不就完了。

0

lhyh - 目前就职成都

赞同来自:

最后的处理方式是先把bitmap存为图片,传给js层用过之后就删掉,感谢小青年提示

要回复问题请先登录注册