<template> <div class="content"></div> </template> <script> var main,receiver,filter; var _codeQueryTag = false; export default { data() { return { scanCode: '' } }, created () { // #ifdef APP-PLUS this.initScan(); this.startScan(); // #endif }, onHide(){ // #ifdef APP-PLUS this.stopScan(); // #endif }, destroyed(){ /*页面退出时一定要卸载监听,否则下次进来时会重复,造成扫一次出2个以上的结果*/ // #ifdef APP-PLUS this.stopScan(); // #endif }, methods: { initScan() { let _this = this; main = plus.android.runtimeMainActivity();//获取activity var IntentFilter = plus.android.importClass('android.content.IntentFilter'); filter = new IntentFilter(); filter.addAction("com.android.server.scannerservice.broadcast"); // 换你的广播动作 receiver = plus.android.implements('io.dcloud.feature.internal.reflect.BroadcastReceiver',{ onReceive : function(context, intent) { plus.android.importClass(intent); let code = intent.getStringExtra("scannerdata");// 换你的广播标签 _this.queryCode(code); }}); }, startScan(){ main.registerReceiver(receiver,filter); }, stopScan(){ main.unregisterReceiver(receiver); }, queryCode(code){ //防重复 if(_codeQueryTag)return false; _codeQueryTag = true; setTimeout(function(){ _codeQueryTag = false; },150); var id = code uni.$emit('scan',id) } } } </script> <style> /* page { background-color: #efeff4; } .content { text-align: center; } */ </style>