public reqPermissionsFromUser(permissions: Array<Permissions>, context: common.UIAbilityContext): void {
let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
// requestPermissionsFromUser会判断权限的授权状态来决定是否唤起弹窗
atManager.requestPermissionsFromUser(context, permissions).then((data) => {
let grantStatus: Array<number> = data.authResults;
let length: number = grantStatus.length;
for (let i = 0; i < length; i++) {
if (grantStatus[i] === 0) {
// 用户授权,可以继续访问目标操作
} else {
// 用户拒绝授权,提示用户必须授权才能访问当前页面的功能,并引导用户到系统设置中打开相应的权限
return;
}
}
// 授权成功
}).catch((err: BusinessError) => {
console.error(`Failed to request permissions from user. Code is ${err.code}, message is ${err.message}`);
})
}
voicePermissions: Array<Permissions> = ['ohos.permission.MICROPHONE'];
oaidPermissions: Array<Permissions> = ['ohos.permission.APP_TRACKING_CONSENT'];
OAID权限在beta1版本之后被默认禁止(模拟器并没有这个限制),目前该权限暂时不开放了,是默认禁止状态。再申请授权后,如果需要用到该权限,可以引导用户打开此权限,只有在用户requestPermissionsFromUser这个接口之后,并且用户选择是否授予权限之后,才会在应用详情页显示该权限开关
参考demo