#
whycq
2024-09-13 f9e93380e5192b35943769950c698c50b86febb6
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
let main, receiver, filter;
let _codeQueryTag = false; // 标记变量
 
export const initScan = () => {
  
  main = plus.android.runtimeMainActivity(); // 获取主 activity
  var IntentFilter = plus.android.importClass("android.content.IntentFilter");
  filter = new IntentFilter();
  const action = uni.getStorageSync('currentDeviceData').action // 获取动作
  const stringExtra = uni.getStorageSync('currentDeviceData').stringExtra // 获取字符串额外参数
  filter.addAction(action); // 添加广播动作
  receiver = plus.android.implements(
    "io.dcloud.feature.internal.reflect.BroadcastReceiver",
    {
      onReceive: function (context, intent) {
        plus.android.importClass(intent);
        let code = intent.getStringExtra(stringExtra); // 获取广播中的字符串额外参数
        console.log(code);
        queryCode(code);
      },
    }
  );
};
 
 
export const startScan = () => {
  main.registerReceiver(receiver, filter); // 开始监听广播
};
export const stopScan = () => {
    console.log(1);
  main.unregisterReceiver(receiver); // 停止监听广播
  // 解绑 uni 全局事件监听器,否则可能会出错
  uni.$off('SCAN_CODE');
};
export const queryCode = (code) => {
  // 防止重复查询
  if (_codeQueryTag) return false;
  _codeQueryTag = true; // 标记为已经查询
  setTimeout(function () {
    _codeQueryTag = false; // 重置标记
  }, 150);
  var id = code;
  //id 就是扫码的结果
  uni.$emit("SCAN_CODE", { code: id }); // 触发 SCAN_CODE 事件,并传递扫描到的内容
};