uniapp实现pda扫描头进行扫码读取二维码\条形码信息
- 获取activity
//获取当前Activity,从而启动activity
let main = plus.android.runtimeMainActivity()
- 创建过滤器
//过滤器
let IntentFilter = plus.android.importClass('android.content.IntentFilter');
let filter = new IntentFilter();
- 换自己的广播动作,可以为默认的,(多设备可修改成唯一的让pda自带扫描工具进行修改适配)
filter.addAction('active'); // 换自定义的广播动作 active 为广播动作
- 创建自定义广播实例
let receiver = plus.android.implements('io.dcloud.feature.internal.reflect.BroadcastReceiver', {
onReceive: function (context : any, intent : any) {
plus.android.importClass(intent);
let code = intent.getStringExtra('value'); // 换自定义的广播标签 value为广播字符串数据标签, code获取的值为扫描头扫描到的条形码\二维码数据
}
})
5.完整代码
let main : any = null
let receiver : any = null
let filter : any = null
const initScan = () => {
//获取当前Activity,从而启动activity
main = plus.android.runtimeMainActivity();
var IntentFilter : any = plus.android.importClass('android.content.IntentFilter');
filter = new IntentFilter();
filter.addAction('active'); // 换自定义的广播动作
receiver = plus.android.implements('io.dcloud.feature.internal.reflect.BroadcastReceiver', {
onReceive: function (context : any, intent : any) {
plus.android.importClass(intent);
let code = intent.getStringExtra('value'); // 换自定义的广播标签
serverCheckFail('error', code)
}
});
main.registerReceiver(receiver, filter);
}
onShow(() => {
initScan();
})
以上为pda自带扫描头扫描条形码\二维码数据。
!!!注意:1.以上操作须在pda自带扫描工具输出方式为"按键和Intent同时输出" 或 “广播模式下”。2.需要适配多个厂商的pda则需将不同厂商的pda自带的扫描工具中的广播动作 ,广播字符串数据标签设置成相同的即可"。