// #ifdef APP-PLUS import { registerRequestPermissionTipsListener, unregisterRequestPermissionTipsListener, setRequestPermissionTips, } from "@/uni_modules/uni-registerRequestPermissionTips"; // #endif // 权限提示 var PermissionTips = {}; PermissionTips["android.permission.CAMERA"] = '

获取相机权限

获取相机权限用于通过手机app扫码登录网页端、拍照上传图片服务'; export const initPermissionTips = () => { // console.log("App Launch - Init Permission Tips"); if (uni.getSystemInfoSync().platform === "android") { var brand = uni.getSystemInfoSync().deviceBrand; setRequestPermissionTips(PermissionTips); registerRequestPermissionTipsListener({ onRequest: (e) => { console.log(e); }, onConfirm: (e) => { console.log(e); }, onComplete: (e) => { // 华为手机在权限禁止之后,再次申请权限不会出现权限申请框。此时应该引导用户去系统设置开启此权限,不应该频繁申请。 if ( brand.toLowerCase() == "huawei" || brand.toLowerCase() == "honor" ) { var tips = {}; var hasDeniedPermission = false; var currentPermission = null; for (var k in PermissionTips) { if (e[k] != "denied") { tips[k] = PermissionTips[k]; } else { currentPermission = k; hasDeniedPermission = true; } } setRequestPermissionTips(tips); // 更新弹框提醒,防止华为手机不出现权限申请框时权限提醒框闪烁的情况 if ( hasDeniedPermission && currentPermission !== "android.permission.WRITE_EXTERNAL_STORAGE" ) uni.showModal({ content: "权限已经被拒绝,请前往设置中开启", }); } }, }); } } export const removePermissionTipsListener = () => { unregisterRequestPermissionTipsListener(null); } // 麦克风权限授权工具 export function authorizeMicrophone() { return new Promise((resolve, reject) => { // #ifdef H5 // H5环境通常在调用start时会自动请求权限,这里直接resolve // 或者可以使用 getUserMedia 预请求 resolve(); // #endif // #ifndef H5 if (plus.os.name === "iOS") { const avAudioSession = plus.ios.import("AVAudioSession"); const avAudio = avAudioSession.sharedInstance(); const permissionStatus = avAudio.recordPermission(); console.log("iOS麦克风权限状态:", permissionStatus); if (permissionStatus === 1735552628) { // 已授权 resolve(); } else if (permissionStatus === 1684369017) { // 已拒绝,提示去设置 console.log("麦克风权限被拒绝"); reject("麦克风权限被拒绝,请在设置中开启"); uni.showModal({ title: "提示", content: "请在设置中开启麦克风权限", success: function (res) { if (res.confirm) { plus.runtime.openURL("app-settings:"); } }, }); } else { // 未决定 (Undetermined),请求权限 console.log("请求麦克风权限..."); avAudio.requestRecordPermission((granted) => { console.log("授权结果:", granted); if (granted) { resolve(); } else { reject("用户拒绝授权"); } }); } } else if (plus.os.name === "Android") { plus.android.requestPermissions( ["android.permission.RECORD_AUDIO"], (resultObj) => { if (resultObj.granted.length > 0) { resolve(); } else { reject("已拒绝安卓录音权限"); } }, (error) => { console.error(`申请安卓权限错误:${error.code} = ${error.message}`); reject(error); } ); } else { // 其他平台默认 resolve resolve(); } // #endif }); }