<template> <view class="content"></view> </template> <script lang="ts" setup> import { onLoad, onShow, onHide, onUnload } from '@dcloudio/uni-app' import { reactive, defineProps } from "vue"; let details = reactive({ activity: null, receiver: null, intentFilter: null, isstart: false, }) const props = defineProps<{ ishidestop ?: boolean }>() onLoad(() => { initScan() startScan(); }) onShow(() => { startScan(); }) onHide(() => { if (props?.ishidestop) return stopScan(); }) onUnload(() => { stopScan(); uni.$off('scancodedate') }) function initScan() { // #ifdef APP if (plus) { details.activity = plus.android.runtimeMainActivity(); //获取activity let IntentFilter = (plus.android.importClass('android.content.IntentFilter') as any); details.intentFilter = new IntentFilter(); details.intentFilter.addAction('android.intent.ACTION_DECODE_DATA') // 换你的广播动作 details.receiver = plus.android.implements('io.dcloud.feature.internal.reflect.BroadcastReceiver', { onReceive: function (context, intent) { console.log("intent", intent) plus.android.importClass(intent); let content = intent.getStringExtra('barcode_string'); // 换你的广播标签 uni.$emit('scancodedate', content.replace(/\n/g, "")) } }); } // #endif } function startScan() { // #ifdef APP if (details.isstart) return details.isstart = true details.activity.registerReceiver(details.receiver, details.intentFilter); // #endif } function stopScan() { // #ifdef APP details.isstart = false details.activity.unregisterReceiver(details.receiver); // #endif } </script> <style> </style>