var main, receiver, filter;
var _codeQueryTag = false;
export default {
initScan() {
console.log("=初始化(二维码扫码)广播=");
let _this = this;
main = plus.android.runtimeMainActivity();//获取activity
var IntentFilter = plus.android.importClass('android.content.IntentFilter');
filter = new IntentFilter();
//android.intent.ACTION_DECODE_DATA
filter.addAction("com.sunmi.scanner.ACTION_DATA_CODE_RECEIVED"); // 换你的广播动作,你的pda设备里面看
receiver = plus.android.implements('io.dcloud.feature.internal.reflect.BroadcastReceiver', {
onReceive: function (context, intent) {
console.log("=监听返回=");
// console.log(context);
//barcode_string
plus.android.importClass(intent);
let code = intent.getStringExtra("data");// 换你的广播标签,你的pda设备里面看
// console.log(code);
_this.queryCode(code);
}
});
},
startScan() {
console.log("=开启(二维码扫码)广播=");
main.registerReceiver(receiver, filter);
},
stopScan() {
console.log("=关闭(二维码扫码)广播=");
main.unregisterReceiver(receiver);
},
queryCode: function (code) {
//防重复
if (_codeQueryTag) return false;
_codeQueryTag = true;
setTimeout(function () {
_codeQueryTag = false;
}, 150);
console.log('(二维码扫码)code:', code);
console.log(typeof code);
uni.$emit("scan_handle", code);
}
}
上述文件 在 App.vue 中引用
import pdaScan from '@/utils/pdaScan.js';
onLaunch: function() {
//初始化广播
pdaScan.initScan();
},
onShow: function() {
//监听广播
pdaScan.startScan();
},
onHide: function() {
console.log('App Hide')
//监听广播
pdaScan.stopScan();
},
最后在需要监听激光扫码的页面 进行监听
import pdaScan from '@/utils/pdaScan.js';
onLoad() {
let that = this
console.log('load-----------------');
pdaScan.initScan();
uni.$on('scan_handle',function(data){
console.log('data',data);
this.result1 = 'didi'
if(!this.page_show) return false;
console.log('scan_index 监听到事件来自 scan_handle ,携带参数 data 为:' + data);
//这里根据你当前业务逻辑写
this.resp_result = data
this.toScan()
this.$forceUpdate()
}.bind(this));
},
onShow(){
console.log("show进入前台,开启监听状态");
this.page_show = true;
},
onHide() {
console.log("hide进入后台,关闭状态");
this.page_show = false;
pdaScan.stopScan();
},
onUnload() {
this.page_show = false;
pdaScan.stopScan();
console.log("监听页面返回")
},