示例demo是以录音ohos.permission.MICROPHONE权限为例子
1.通过requestPermissionsFromUser接口进行权限状态获取

关键代码:
let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
let context = getContext(this) as common.UIAbilityContext;
// 等待权限请求完成
const data: PermissionRequestResult = await atManager.requestPermissionsFromUser(context, ['ohos.permission.MICROPHONE']);
2.通过checkAccessToken接口进行首次授权弹窗拉起

关键代码:
let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
let bundleInfo: bundleManager.BundleInfo =
await bundleManager.getBundleInfoForSelf(bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_APPLICATION);
let appInfo: bundleManager.ApplicationInfo = bundleInfo.appInfo;
let tokenID: number = appInfo.accessTokenId;
atManager.checkAccessToken(tokenID, 'ohos.permission.MICROPHONE').then((data: abilityAccessCtrl.GrantStatus) => {
const authResult = data === 0 ? 1 : 0;
console.log(`checkAccessToken success, data->${JSON.stringify(data)}`,authResult.toString());
}).catch((err: BusinessError) => {
console.error(`checkAccessToken fail, err->${JSON.stringify(err)}`);
});
3.首次弹窗取消或拒绝后checkAccessToken接口将无法二次拉起,所以需要通过requestPermissionOnSetting进行系统授权弹窗拉起

关键代码:
let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
let context= getContext(this) as common.UIAbilityContext;
atManager.requestPermissionOnSetting(context, ['ohos.permission.MICROPHONE']).then((data: Array<abilityAccessCtrl.GrantStatus>) => {
console.info('data:' + JSON.stringify(data));
const authResult = data[0] === 0 ? 1 : 0;
}).catch((err: BusinessError) => {
console.error('data:' + JSON.stringify(err));
});

被折叠的 条评论
为什么被折叠?



