lhyh
lhyh
  • 发布:2018-03-10 15:26
  • 更新:2019-07-09 14:49
  • 阅读:5259

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

分类:5+ SDK

问题如题,硬件识别身份证。
通过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 负责人:无 分享
已邀请:
赵梦欢

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

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

  • lhyh (作者)

    哈哈谢谢大佬回复,把它存储为文件考虑过,主要是存储身份证照片的话可能会带来开发之外的问题

    2018-03-11 18:42

lhyh

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

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

  • Akin

    你好,你是不是做的像支付宝那种扫描身份证可以出信息的那种?我想问下那个拍照界面应该怎么处理啊?

    2018-03-12 15:28

  • lhyh (作者)

    回复 Akin:不是,我是用硬件直接识别身份证,有点像去火车站用身份证取票那种,不是扫一扫识别。如果你们要自定义扫描界面,需要离线打包

    2018-03-12 16:01

  • Akin

    自定义扫描界面你知道怎么做吗?有没有那种文档可以看的,推荐下吧。我找到的全是java 编辑andriod的自定义相机

    2018-03-12 16:12

  • lhyh (作者)

    回复 Akin:HB没有符合你要求的自定义扫描界面,只有离线打包,自己实现对应的功能

    2018-03-12 17:27

  • 6***@qq.com

    使用百度API就可以,直接识别信息后返回身份证信息

    2018-08-01 11:14

1***@qq.com

1***@qq.com

我也遇到这个问题了,请问怎么把值传到js层啊

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