HarmonyOS Next 手动获取权限,手动拉起弹窗授权,第一次授权取消后二次拉起系统弹窗授权

示例demo是以录音ohos.permission.MICROPHONE权限为例子

1.通过requestPermissionsFromUser接口进行权限状态获取

cke_346.png

关键代码:

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接口进行首次授权弹窗拉起

cke_8159.png

关键代码:

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进行系统授权弹窗拉起

cke_30384.png

关键代码:

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));
});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值