动态申请权限的步骤是怎样的?

动态申请权限的步骤是怎样的?

HarmonyOS
2024-08-05 18:18:49
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
噜啦噜啦嘞噜啦嘞

在 module.json5 中添加权限说明

module-requestPermissions
  {
        "name": "ohos.permission.READ_CALENDAR",
        "reason": '$string:permission_reason_calendar',//当申请的权限为
        "usedScene": {}
      },

(2)检查是否已经授权过此权限

// 检查授权结果
checkPermissions(permissions: Permissions[]) {
创建应用权限管理器
  const atManager = abilityAccessCtrl.createAtManager();
获取 bundle 包信息
  const bundleInfo = bundleManager.getBundleInfoForSelfSync(bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_APPLICATION)
提取 tokenID 应用唯一标识
  const tokenID = bundleInfo.appInfo.accessTokenId;
校验应用是否被授予某个权限
  const authResults = permissions.map((permission) => atManager.checkAccessTokenSync(tokenID, permission))
处理授权结果
  return authResults.every(v => v === abilityAccessCtrl.GrantStatus.PERMISSION_GRANTED)
}复制

(3)动态向用户申请授权

// 拉起弹框请求用户授权
async requestPermissions(permissions: Permissions[]) {
创建应用权限管理器
  const atManager = abilityAccessCtrl.createAtManager();
拉起弹框请求用户授权
  const grantStatus = await atManager.requestPermissionsFromUser(getContext(), permissions)
处理请求权限结果
  return grantStatus.authResults.every(v => v === abilityAccessCtrl.GrantStatus.PERMISSION_GRANTED)
}

(4)处理授权结果

注意:如果用户在弹窗中拒绝授权,再次调用 将没有任何反应。 需要引导用户在系统设置页中开启应用权限。

// 打开系统设置的权限管理页
openPermissionSettingsPage() {
获取上下文
  const context = getContext() as common.UIAbilityContext
获取包信息
  const bundleInfo = bundleManager.getBundleInfoForSelfSync(bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_APPLICATION)
打开系统设置页
  context.startAbility({
    bundleName: 'com.huawei.hmos.settings', // 固定写法CV:设置页的包名
    abilityName: 'com.huawei.hmos.settings.MainAbility', // 固定写法CV:设置页的 ability 名
    uri: 'application_info_entry', // 固定写法CV:打开设置->应用和元服务
    parameters: {
按照包名打开对应设置页
      pushParams: bundleInfo.name
    }
  })
}
分享
微博
QQ
微信
回复
2024-08-05 22:52:40
相关问题
HarmonyOS 动态申请权限申请不了
554浏览 • 1回复 待解决
动态申请权限能否添加描述
1417浏览 • 1回复 待解决
HarmonyOS 仓颉权限怎么申请
651浏览 • 1回复 待解决
InputMethodAbility用法怎样
8299浏览 • 1回复 待解决
PolarDB报警功能怎样
3122浏览 • 1回复 待解决
AppStorage 作用范围怎样
2770浏览 • 1回复 待解决
关于权限申请配置文件声明
2250浏览 • 1回复 待解决
HarmonyOS App如何移除SDK申请权限
648浏览 • 1回复 待解决
PolarDB监控功能怎样
3843浏览 • 1回复 待解决
PolarDB诊断功能怎样
3416浏览 • 1回复 待解决
如何申请设备上媒体读写权限
3181浏览 • 1回复 待解决
HarmonyOS 位置权限申请
625浏览 • 1回复 待解决