修改语音按钮获取录音授权
This commit is contained in:
@@ -0,0 +1,93 @@
|
||||
import {
|
||||
getPhoneEnvBool
|
||||
} from '@/common/common.js'
|
||||
|
||||
import common from '@/common/common.js'
|
||||
const IsAndEnv = getPhoneEnvBool('AND')
|
||||
import permission from '@/common/permission.js'
|
||||
|
||||
/**
|
||||
* 录音权限工具类
|
||||
* 统一处理安卓和iOS的录音权限状态:同意、拒绝、未设置
|
||||
*/
|
||||
const RecordPermission = {
|
||||
hasRecordPermission: false,
|
||||
/**
|
||||
* 获取当前录音权限状态
|
||||
* @returns {Promise<'granted'|'denied'|'undetermined'>} 权限状态
|
||||
*/
|
||||
getPermissionState() {
|
||||
// #ifdef APP-PLUS
|
||||
const authSetting = uni.getAppAuthorizeSetting();
|
||||
const state = authSetting.microphoneAuthorized;
|
||||
switch (state) {
|
||||
case 'authorized':
|
||||
return 'authorized';
|
||||
case 'denied':
|
||||
return 'denied';
|
||||
case 'not determined':
|
||||
return 'undetermined';
|
||||
case 'config error':
|
||||
return 'undetermined';
|
||||
default:
|
||||
return 'undetermined';
|
||||
}
|
||||
// #endif
|
||||
// 非APP环境默认返回以获取方便h5调试
|
||||
return 'undetermined';
|
||||
},
|
||||
|
||||
/**
|
||||
* 检查并请求录音权限
|
||||
* @returns {Promise<boolean>} 是否获得录音权限
|
||||
*/
|
||||
requestPermission() {
|
||||
if (this.hasRecordPermission) {
|
||||
console.log('直接通过');
|
||||
return Promise.resolve('authorized');
|
||||
}
|
||||
return new Promise(async (resolve, reject) => {
|
||||
const state = this.getPermissionState();
|
||||
// 已同意权限
|
||||
console.log('权限状态', state);
|
||||
if (state === 'authorized') {
|
||||
this.hasRecordPermission = true; // 缓存权限状态
|
||||
resolve('authorized')
|
||||
};
|
||||
if (state === 'denied') {
|
||||
const result = await common.show(
|
||||
'提示信息',
|
||||
'当前页面需要使用录音权限,是否前往开启?'
|
||||
)
|
||||
if (result) {
|
||||
// 前往权限设置页面
|
||||
uni.openAppAuthorizeSetting();
|
||||
reject('open_app_authorize_setting')
|
||||
} else {
|
||||
// 用户取消,返回上一页
|
||||
reject('cancel')
|
||||
}
|
||||
}
|
||||
|
||||
if (state === 'undetermined') {
|
||||
// #ifdef APP-PLUS
|
||||
if (IsAndEnv) {
|
||||
// 安卓需要再次请求权限
|
||||
const permResult = await permission.requestAndroidPermission(
|
||||
'android.permission.RECORD_AUDIO');
|
||||
console.log('permResultx', permResult);
|
||||
if(permResult === 1) {
|
||||
|
||||
}
|
||||
} else {
|
||||
reject('need_request');
|
||||
}
|
||||
// #endif
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
|
||||
};
|
||||
|
||||
export default RecordPermission;
|
||||
Reference in New Issue
Block a user