<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>