uniapp安卓和ios获取麦克风权限

var isIos
// #ifdef APP-PLUS
isIos = (plus.os.name == 'iOS')
// 判断麦克风权限是否开启
function judgeIosPermissionRecord() {
    return new Promise((resolve) => {
        if(isIos) {
			var result = false;
			var avaudiosession = plus.ios.import("AVAudioSession");
			var avaudio = avaudiosession.sharedInstance();
			var permissionStatus = avaudio.recordPermission();
			console.log("permissionStatus:" + permissionStatus);
			if (permissionStatus == 1684369017 || permissionStatus == 1970168948) {
				console.log("麦克风权限没有开启");
				uni.showModal({
					title: '提示',
					content: '需要麦克风权限才能使用录音功能,是否去设置开启?',
					success: function(res) {
						if (res.confirm) {
							gotoAppPermissionSetting();
						}
					}
				});
				resolve(false);
		
			} else {
				result = true;
				console.log("麦克风权限已经开启");
			}
			plus.ios.deleteObject(avaudiosession);
			resolve(result);
        } else {
            var PackageManager = plus.android.importClass("android.content.pm.PackageManager");
            var main = plus.android.runtimeMainActivity();
            var checkPermission = main.checkSelfPermission("android.permission.RECORD_AUDIO");
            
            if(checkPermission == PackageManager.PERMISSION_GRANTED) {
                console.log("麦克风权限已经开启");
                resolve(true);
            } else {
                console.log("麦克风权限没有开启");
                
                plus.android.requestPermissions(
                    ['android.permission.RECORD_AUDIO'], 
                    function(e) {
                        if (e.deniedAlways.length > 0) {  // 权限被永久拒绝  //用户没有选择竟然也是跟永久拒绝返回的参数一样(暂时无解),微信也是这样做的
                            console.log('永久拒绝!' + e.deniedAlways.toString());
                            uni.showModal({
                                title: '提示',
                                content: '需要麦克风权限才能使用录音功能,是否去设置开启?',
                                success: function(res) {
                                    if (res.confirm) {
                                        gotoAppPermissionSetting();
                                    }
                                }
                            });
                            resolve(false);
                        } else if (e.deniedPresent.length > 0) {  // 权限被临时拒绝
                            console.log('临时拒绝!' + e.deniedPresent.toString());
                            resolve(false);
                        } else if (e.granted.length > 0) {  // 权限被允许
                            console.log('已授权!' + e.granted.toString());
                            resolve(true);
                        } else { 
                            console.log('未做选择');
                            resolve(false);
                        }
                    }, 
                    function(e) {
                        console.log('请求权限错误:' + JSON.stringify(e));
                        resolve(false);
                    }
                );
            }
        }
    });
}

//跳转设置
function gotoAppPermissionSetting() {
	if (isIos) {
		var UIApplication = plus.ios.import('UIApplication')
		var application2 = UIApplication.sharedApplication()
		var NSURL2 = plus.ios.import('NSURL')
		// var setting2 = NSURL2.URLWithString("prefs:root=LOCATION_SERVICES");
		var setting2 = NSURL2.URLWithString('app-settings:')
		application2.openURL(setting2)
 
		plus.ios.deleteObject(setting2)
		plus.ios.deleteObject(NSURL2)
		plus.ios.deleteObject(application2)
	} else {
		// console.log(plus.device.vendor);
		var Intent = plus.android.importClass('android.content.Intent')
		var Settings = plus.android.importClass('android.provider.Settings')
		var Uri = plus.android.importClass('android.net.Uri')
		var mainActivity = plus.android.runtimeMainActivity()
		var intent = new Intent()
		intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS)
		var uri = Uri.fromParts('package', mainActivity.getPackageName(), null)
		intent.setData(uri)
		mainActivity.startActivity(intent)
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值