| | |
| | | <script setup lang="ts"> |
| | | import { onLaunch, onShow, onHide } from "@dcloudio/uni-app"; |
| | | import { useThemeStore } from "@/store"; |
| | | import { ref } from "vue"; |
| | | |
| | | // 主题初始化 |
| | | const themeStore = useThemeStore(); |
| | | |
| | | // 全局扫码广播接收器 |
| | | let main: any = null; |
| | | let receiver: any = null; |
| | | let filter: any = null; |
| | | |
| | | // 初始化扫码广播接收 |
| | | const initGlobalScan = () => { |
| | | // #ifdef APP-PLUS |
| | | try { |
| | | main = plus.android.runtimeMainActivity(); |
| | | const IntentFilter = plus.android.importClass("android.content.IntentFilter"); |
| | | filter = new IntentFilter(); |
| | | filter.addAction("com.dwexample.ACTION"); |
| | | |
| | | receiver = plus.android.implements("io.dcloud.feature.internal.reflect.BroadcastReceiver", { |
| | | onReceive: (context: any, intent: any) => { |
| | | console.log("🔍 [全局Scan] onReceive 触发:", context, intent); |
| | | plus.android.importClass(intent); |
| | | const scanResult = intent.getStringExtra("com.motorolasolutions.emdk.datawedge.data_string"); |
| | | console.log("🔍 [全局Scan] 扫描结果:", scanResult); |
| | | |
| | | // 发送到所有可能的事件 |
| | | const eventNames = ["scan", "scanIndex", "scanJX", "scanLS"]; |
| | | eventNames.forEach((eventName) => { |
| | | uni.$emit(eventName, { code: scanResult }); |
| | | console.log(`🔍 [全局Scan] 已发送 ${eventName} 事件`); |
| | | }); |
| | | }, |
| | | }); |
| | | |
| | | // 注册广播接收器 |
| | | main.registerReceiver(receiver, filter); |
| | | console.log("🔍 [全局Scan] 全局扫码广播接收器已启动"); |
| | | } catch (error) { |
| | | console.error("🔍 [全局Scan] 初始化失败:", error); |
| | | } |
| | | // #endif |
| | | }; |
| | | |
| | | // 停止扫码广播接收 |
| | | const stopGlobalScan = () => { |
| | | // #ifdef APP-PLUS |
| | | try { |
| | | if (main && receiver) { |
| | | main.unregisterReceiver(receiver); |
| | | console.log("🔍 [全局Scan] 全局扫码广播接收器已停止"); |
| | | } |
| | | } catch (error) { |
| | | console.error("🔍 [全局Scan] 停止失败:", error); |
| | | } |
| | | // #endif |
| | | }; |
| | | |
| | | onLaunch(() => { |
| | | console.log("App Launch"); |
| | | // 初始化主题 |
| | | themeStore.initTheme(); |
| | | // 初始化全局扫码广播接收器 |
| | | initGlobalScan(); |
| | | }); |
| | | |
| | | onShow(() => { |
| | | console.log("App Show"); |
| | | // 应用显示时重新启动广播接收器 |
| | | initGlobalScan(); |
| | | }); |
| | | |
| | | onHide(() => { |
| | | console.log("App Hide"); |
| | | // 应用隐藏时不停止广播(保持后台接收) |
| | | }); |
| | | </script> |
| | | |