问题如题,硬件识别身份证。
通过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
lhyh (作者)
哈哈谢谢大佬回复,把它存储为文件考虑过,主要是存储身份证照片的话可能会带来开发之外的问题
2018-03-11 18:42