哪里需要用到扫描功能,哪里就把这个放在页面上,里面有些参数是需要跟当前的pad工具里面的参数一致的
一般都会默认一样的
<script>
var main, receiver, filter;
var _codeQueryTag = false;
export default {
data() {
return {
}
}
onShow() {
//PDA扫描开始
this.startScan();
},
onLoad(value) {
//PDA扫描初始化实例
this.initScan()
},
onHide() {
//PDA扫描调用结束
this.stopScan();
},
onUnload() {
/*页面退出时一定要卸载监听,否则下次进来时会重复,造成扫一次出2个以上的结果*/
this.stopScan();
},
methods: {
// 扫描逻辑
initScan() {
let _this = this;
/* #ifdef APP-PLUS */
main = plus.android.runtimeMainActivity(); //获取activity
/* var context = plus.android.importClass('android.content.Context'); */
var IntentFilter = plus.android.importClass('android.content.IntentFilter');
/* var Intent = plus.android.importClass('android.content.Intent'); */
filter = new IntentFilter();
filter.addAction("com.android.server.scannerservice.broadcast");
receiver = plus.android.implements('io.dcloud.feature.internal.reflect.BroadcastReceiver', {
onReceive: function(context, intent) {
plus.android.importClass(intent);
/*不同的手机或pda,这个值就不一样,要具体去查硬件api*/
let code = intent.getStringExtra("scannerdata");
/* rmker.showTip('条码:'+code); */
/*调用本页面某方法*/
_this.queryCode(code);
}
});
/* #endif */
},
startScan() {
/* #ifdef APP-PLUS */
main.registerReceiver(receiver, filter);
/* #endif */
},
stopScan() {
/* #ifdef APP-PLUS */
main.unregisterReceiver(receiver);
/* #endif */
},
queryCode: function(code) {
//防重复
if (_codeQueryTag) return false;
_codeQueryTag = true;
setTimeout(function() {
_codeQueryTag = false;
}, 150);
//到这里扫描成功了,可以调用自己的业务逻辑,code就是扫描的结果
if (code) {
this.scanCode = code.replace(/\s/g, "");
console.log(code)
}
},
}
}
网友评论