一、设备设置
参考下文
基于uniapp实现监听PDA扫码功能,以霍尼韦尔(EDA50P)为例,可根据默认广播适配多厂商PDA【保姆级】_uniapp扫码枪监听-CSDN博客
首先感谢这位博主老师的文,前面设备设置都是一样的
二、问题
我是直接复制粘贴了上文老师提供的代码,,改了广播动作直接扔进去跑了 ,在app里,可以监听到扫码,但是返回值都是 null 。
三、问题解决
修改后的代码
receiver = plus.android.implements('io.dcloud.feature.internal.reflect.BroadcastReceiver', {
onReceive: function(context, intent) {
console.log('---onReceive:', context, intent);
plus.android.importClass(intent);
let extras = intent.getExtras();
if (extras) {
plus.android.importClass(extras);
// 获取 KeySet 并导入 KeySet 类
let keys = extras.keySet();
plus.android.importClass(keys);
// 获取迭代器
let iterator = keys.iterator();
plus.android.importClass(iterator);
// 遍历所有键
while (iterator.hasNext()) {
let key = iterator.next();
plus.android.importClass(key);
// 获取并打印值
let value = extras.get(key);
if (key === 'data') {
// 处理 'data' 键的值
console.log('--- Data value: ', value);
let code=value
_this.queryCode(code);
}
}
} else {
console.log('--- Extras is null.');
}
}
});
这样可以遍历到所有的键,控制台信息如下
10:28:45.455 --- Extra Key: codeId, Value: s at components/padDevice/scan-code.vue:64 10:28:45.472 --- Extra Key: dataBytes, Value: 49,50,51,52,53,54 at components/padDevice/scan-code.vue:64 10:28:45.492 --- Extra Key: data, Value: 123456 at components/padDevice/scan-code.vue:64 10:28:45.507 --- Extra Key: timestamp, Value: 2024-07-19T10:27:25.764+8:00 at components/padDevice/scan-code.vue:64 10:28:45.525 --- Extra Key: aimId, Value: ]Q1 at components/padDevice/scan-code.vue:64 10:28:45.543 --- Extra Key: version, Value: 1 at components/padDevice/scan-code.vue:64 10:28:45.562 --- Extra Key: charset, Value: ISO-8859-1 at components/padDevice/scan-code.vue:64 10:28:45.579 --- Extra Key: scanner, Value: dcs.scanner.imager at components/padDevice/scan-code.vue:64
可以看到很多Extra Key ,只要把里面想要的值获取到就行了,
---我是菜鸡,代码写的很垃圾,欢迎各位老师指导交流,第一次发文,求轻喷