// pda的特色设置中需要关闭-禁止将扫描按键的键值传递给应用的开关 let mainActivity; // 运行时的主要活动activity let intentFilter; // 实例化的意图过滤器 let broadcastReceiver; // 广播接收器 let repeatFlag = false; // 初始化定义广播 const init = (onReceiveCallback) => { /* #ifdef APP-PLUS */ // 获取activity mainActivity = plus.android.runtimeMainActivity(); // 导入类 const IntentFilter = plus.android.importClass('android.content.IntentFilter'); //实例化一个意图过滤器 intentFilter = new IntentFilter(); // addAction添加动作, com.android.server.scannerservice.broadcast为设备配置的广播名称 intentFilter.addAction("com.android.server.scannerservice.broadcast"); // BroadcastReceiver广播接收器接口:implements 实现接口 onReceive实现接口的方法 broadcastReceiver = plus.android.implements('io.dcloud.feature.internal.reflect.BroadcastReceiver', { onReceive: function(context, intent) { plus.android.importClass(intent); // 扫描设置的开发者选项--手持机pda的广播键值scannerdata const code = intent.getStringExtra("scannerdata"); console.log('pda原始扫描数据:', code); //防重复 if (repeatFlag) return; repeatFlag = true; setTimeout(function() { repeatFlag = false; }, 150); // 到这里扫描成功,获取结果,可以调用自己的业务逻辑 onReceiveCallback && onReceiveCallback(code); } }); /* #endif */ } // 开始广播监听扫码 const start = () => { /* #ifdef APP-PLUS */ mainActivity.registerReceiver(broadcastReceiver, intentFilter); /* #endif */ } // 停止广播监听扫码 const stop = () => { /* #ifdef APP-PLUS */ mainActivity.unregisterReceiver(broadcastReceiver); /* #endif */ } // 主动触发扫描 const triggerScan = () => { // 获取Android意图类 let Intent = plus.android.importClass("android.content.Intent"); // 实例化意图 let intent = new Intent(); // 定义意图,由厂商提供(此处设置为东大的:开始扫描广播com.scan.onStartScan,对应的停止扫描广播为com.scan.onEndScan) intent.setAction("com.scan.onStartScan"); // 广播这个意图 mainActivity.sendBroadcast(intent); } export const broadcastScan = { init, start, stop, triggerScan, }; // 引入使用 // import { broadcastScan } from './scanCode.js';