货无忧
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

79 lines
1.9 KiB

2 years ago
<template>
<view class="content"></view>
</template>
1 year ago
<script lang="ts" setup>
2 years ago
import {
onLoad,
onShow,
onHide,
onUnload
} from '@dcloudio/uni-app'
1 year ago
import {
reactive,
defineProps
} from "vue";
1 year ago
let details = reactive({
activity: null,
receiver: null,
intentFilter: null,
isstart: false,
1 year ago
1 year ago
})
const props = defineProps<{ ishidestop ?: boolean }>()
onLoad(() => {
initScan()
startScan();
// console.log('扫描的--------------onLoad');
1 year ago
})
onShow(() => {
startScan();
// console.log('扫描的--------------onShow');
1 year ago
})
onHide(() => {
if (props?.ishidestop) return
stopScan();
console.log('扫描的--------------onHide');
})
onUnload(() => {
stopScan();
uni.$off('scancodedate')
// console.log('扫描的--------------onUnload');
1 year ago
})
1 year ago
1 year ago
function initScan() {
// #ifdef APP
if (plus) {
details.activity = plus.android.runtimeMainActivity(); //获取activity
var IntentFilter = (plus.android.importClass('android.content.IntentFilter') as any);
details.intentFilter = new IntentFilter();
details.intentFilter.addAction('com.android.server.scannerservice.broadcast') // 换你的广播动作
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('scannerdata'); // 换你的广播标签
uni.$emit('scancodedate', content.replace(/\n/g, ""))
}
});
2 years ago
}
1 year ago
// #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
2 years ago
}
</script>
<style>
1 year ago
</style>