let pdaMain; let filter; let receiver; let receiving = false; /** * 开始广播监听扫码 */ const start = () => { /* #ifdef APP-PLUS */ if (!pdaMain) return; pdaMain.registerReceiver(receiver, filter); // console.log('pda scan started.'); /* #endif */ } /** * 停止广播监听扫码 */ const stop = () => { /* #ifdef APP-PLUS */ if (!pdaMain) return; pdaMain.unregisterReceiver(receiver); // console.log('pda scan stopped.'); /* #endif */ } /** * 定义广播 */ const init = (receive) => { //获取activity /* #ifdef APP-PLUS */ pdaMain = plus.android.runtimeMainActivity(); const IntentFilter = plus.android.importClass('android.content.IntentFilter'); filter = new IntentFilter(); // 扫描设置的广播名称,霍尼韦尔:com.honeywell.scan,优博讯:android.intent.ACTION_DECODE_DATA // 肯麦思公司:com.android.server.scannerservice.broadcast filter.addAction("com.android.server.scannerservice.broadcast"); // filter.addCategory('sn'); receiver = plus.android.implements('io.dcloud.feature.internal.reflect.BroadcastReceiver', { onReceive: function(context, intent) { plus.android.importClass(intent); // 扫描设置的开发者选项--键值名称 const code = intent.getStringExtra("scannerdata"); //防重复 if (receiving) return; receiving = true; setTimeout(function() { receiving = false; }, 300); receive(code); } }); // console.log('pda scan inited.'); /* #endif */ } const destroy = () => { /* #ifdef APP-PLUS */ receiver = undefined; filter = undefined; pdaMain = undefined; // console.log('pda scan destroied.'); /* #endif */ } export default { init, start, stop, destroy };