#鸿蒙通关秘籍# 如何在 HarmonyOS 中实现权限请求的最佳实践?

HarmonyOS
2024-12-10 10:13:24
浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
第一小趴菜
import { abilityAccessCtrl, Permissions,common } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit'


// 权限申请 里面放我们刚刚在module.json5中申请的几个权限,不光Location Kit可以使用,其他需要的user_grant权限申请也可以更改一下这个值,直接使用
export const permissions: Array<Permissions> = ['ohos.permission.LOCATION','ohos.permission.APPROXIMATELY_LOCATION'];

// 使用UIExtensionAbility:将common.UIAbilityContext 替换为common.UIExtensionContext
export  function 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}`);
  })
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
分享
微博
QQ
微信
回复
2024-12-13 15:33:04


相关问题
HarmonyOS jsBridge 最佳实践
882浏览 • 1回复 待解决
HarmonyOS 事件传递最佳实践咨询
591浏览 • 1回复 待解决
输出静态库最佳实践
793浏览 • 1回复 待解决
网络监听最佳实践有哪些?
1047浏览 • 1回复 待解决