uniapp 安卓如何获取通话权限,监听通话情况

该文章详细介绍了如何在uniapp中针对Android系统请求并监听通话权限。通过使用`plus.android.requestPermissions`获取权限,然后利用`TelephonyManager`监听电话状态,实现对通话的监控,包括空闲、振铃和通话存在的不同状态。
摘要由CSDN通过智能技术生成

本篇文章还是主要讲解uniapp知识,那么在uniapp中如何去实现监听通话的权限?接下来请看代码

// 可以放在App.vue当中 也可以放在页面的onload里面
if (plus.os.name == 'Android') {
	plus.android.requestPermissions(
		[	'android.permission.ANSWER_PHONE_CALLS', //手动 挂断和接听 需要这个权限
			"android.permission.MODIFY_AUDIO_SETTINGS", //手动 挂断和接听 需要这个权限
			"android.permission.CALL_PHONE", //手动 挂断和接听 需要这个权限
			"android.permission.READ_PHONE_STATE", //>监听电话状态 需要这个权限
			"android.permission.READ_CALL_LOG", //获取号码需要这个权限
			"android.permission.READ_AUDIO" // 录音权限
		],
		function(resultObj) {
			var result = 0;
			for (var i = 0; i < resultObj.granted.length; i++) {
				var grantedPermission = resultObj.granted[i];
				console.log('已获取的权限:' + grantedPermission);
				result = 1
			}
			for (var i = 0; i < resultObj.deniedPresent.length; i++) {
				var deniedPresentPermission = resultObj.deniedPresent[i];
				console.log('拒绝本次申请的权限:' + deniedPresentPermission);
				result = 0
			}
			for (var i = 0; i < resultObj.deniedAlways.length; i++) {
				var deniedAlwaysPermission = resultObj.deniedAlways[i];
				console.log('永久拒绝申请的权限:' + deniedAlwaysPermission);
				result = -1
			}
		},
		function(error) {
			console.log('申请权限错误:' + error.code + " = " + error.message);
	});
}

!](https://img-blog.csdnimg.cn/57decf59db934c018db6961f3f0d7914.png)

在页面中调用方法 监听通话状态

onLoad() {
	this.getCallStatus()
},
methods: {
	getCallStatus() {
		let that = this;
		let maintest = plus.android.runtimeMainActivity();//获取activity
		let Contexttest = plus.android.importClass("android.content.Context");// 上下文
		let telephonyManager = plus.android.importClass("android.telephony.TelephonyManager"); //通话管理
		let telManager = plus.android.runtimeMainActivity().getSystemService(Contexttest.TELEPHONY_SERVICE);
		let receiver = plus.android.implements('io.dcloud.android.content.BroadcastReceiver', {
			onReceive: function(Contexttest, intent) {
				plus.android.importClass(intent);
				let phoneStatus = telManager.getCallState();
				that.callStatus = phoneStatus; //电话状态 0->空闲状态 1->振铃状态 2->通话存在
				switch (phoneStatus) {
					case 0:
						console.log("电话挂断")
						break;
					case 1:
						console.log('振铃状态');
						break;
					case 2:
						console.log('通话存在')
						break;
				}
			}
		});
		let IntentFilter = plus.android.importClass('android.content.IntentFilter');
		let filter = new IntentFilter();
		filter.addAction(telephonyManager.ACTION_PHONE_STATE_CHANGED); // 监听电话状态
		maintest.registerReceiver(receiver, filter); // //注册监听
	}
}
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值