uni app 打包app 监听广播

pda 设备上用广播监听扫码

可以用于其他广播监听  

var main = null;
var receiver = null;
//接收广播
function recive(success, fail) {

	// #ifdef APP





	main = plus.android.runtimeMainActivity(); //获取activity
	//创建自定义广播实例  
	receiver = plus.android.implements('io.dcloud.feature.internal.reflect.BroadcastReceiver', {
		onReceive: function(context, intent) { //实现onReceiver回调函数  
			plus.android.importClass(intent); //通过intent实例引入intent类,方便以后的‘.’操作  
			var action = intent.getAction()

			var data
			switch (action) {
				case "com.android.server.scannerservice.broadcast":
					data = intent.getExtra("scannerdata");
					break

				case "android.intent.action.SCANRESULT":
					data = intent.getExtra("value");
					break

				case "android.intent.ACTION_DECODE_DATA":
					data = intent.getExtra("barcode_string");
					break

				case "com.android.provider.sdlmessage":
					data = intent.getExtra("msg");
					break
				case "com.neusoft.action.scanner.read":

					data = intent.getStringExtra("scanner_value"); //东软pda
					if (data == null) {
						data = intent.getStringExtra("Scanner_value"); //东软pda
					}
					break
				case "nlscan.action.SCANNER_RESULT":
					data = intent.getExtra("SCAN_BARCODE1");
					break
				case "com.barcode.sendBroadcast":
					data = intent.getExtra("BARCODE");
					break

				case "scan.rcv.message":


					let barocode = intent.getByteArrayExtra("barocode");
					let barocodelen = intent.getIntExtra("length", 0);
					data = new String(barocode, 0, barocodelen);

					break

				case "xlyk.wz":
					data = intent.getExtra("qrcode");
					break

				case "com.android.scanner.broadcast":
					data = intent.getExtra("scandata");
					break
				case "com.honeywell.scan.broadcast":
					data = intent.getExtra("data");
					break


			}
			if (data) {
				// console.log('zhanglp', data.replace(/\n/, ''))
				// console.log('zhanglp', data.replace(/\n/, '').replace(/\t/, ''))
				success({
					type: 'barcode',
					data: data.replace(/\n/, '').replace(/\t/, '').trim() //处理结束符和换行符为空
				})
			} else {

				fail({
					type: 'barcode',
					data: '未识别到扫码数据' //处理结束符和换行符为空
				})
			}


		}
	});
	var IntentFilter = plus.android.importClass('android.content.IntentFilter'); //网络
	var Intent = plus.android.importClass('android.content.Intent');
	var filter = new IntentFilter(); //过滤





	filter.addAction("com.android.provider.sdlMessage"); //海信
	filter.addAction("com.neusoft.action.scanner.read"); //东软
	filter.addAction("nlscan.action.SCANNER_RESULT"); //新大陆  霍尼韦尔
	filter.addAction("scan.rcv.message"); //南方鸿志
	filter.addAction("com.android.server.scannerservice.broadcast"); //得实2 东大集成  扫码工具密码888888
	filter.addAction("android.intent.action.SCANRESULT"); //得实idata
	//            filter.addAction("com.android.server.scannerservice.broadcast");//东大集成  扫码工具密码888888
	filter.addAction("android.intent.ACTION_DECODE_DATA"); //UROVO  优博讯科
	filter.addAction("com.barcode.sendBroadcast"); //西安富立叶微电子 F760
	filter.addAction("xlyk.wz"); //西安富立叶微电子 F760
	filter.addAction("com.android.scanner.broadcast");
	filter.addAction("com.android.scanner.broadcast");
	filter.addAction("com.honeywell.scan.broadcast");


	main.registerReceiver(receiver, filter); //注册监听
	// #endif
}
//取消监听
function unregisterReceiver() {
	// #ifdef APP
	console.log("取消监听广播")
	main.unregisterReceiver(receiver);
	// #endif
}


module.exports = {
	recive: recive,
	unregisterReceiver: unregisterReceiver
}

使用方法  在监听的页面 加入

import broReceiver from '../../utils/Broadcast.js'

    onShow() {

            broReceiver.recive(function(res) {
                console.log("setting....", JSON.stringify(res))
                 
            }, function(err) {
                console.log("setting....", JSON.stringify(res))
            })


        },

//记得页面隐藏或卸载 关闭监听

onUnload: function() {
            broReceiver.unregisterReceiver()
        },

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值