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

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

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
相关问题
动态申请权限能否添加描述
394浏览 • 1回复 待解决
关于权限申请配置文件声明
1447浏览 • 1回复 待解决
InputMethodAbility用法怎样
7479浏览 • 1回复 待解决
如何申请设备上媒体读写权限
1856浏览 • 1回复 待解决
PolarDB监控功能怎样
3114浏览 • 1回复 待解决
PolarDB诊断功能怎样
2817浏览 • 1回复 待解决
PolarDB报警功能怎样
2310浏览 • 1回复 待解决
如何申请组合授权权限
122浏览 • 1回复 待解决
app如何申请位置权限
131浏览 • 1回复 待解决
HarmonyOS权限申请问题
117浏览 • 1回复 待解决
如何申请广告跟踪权限
137浏览 • 1回复 待解决
AppStorage 作用范围怎样
1905浏览 • 1回复 待解决
UIAbility热启动过程怎样
134浏览 • 1回复 待解决
PolarDB自动SQL 优化怎样
2425浏览 • 1回复 待解决
权限申请与校验,该如何处理啊?
593浏览 • 1回复 待解决
Web组件如何申请位置权限
140浏览 • 1回复 待解决
api 9 申请网络权限报错
3173浏览 • 1回复 待解决
华为Mate40配置怎样
6876浏览 • 1回复 待解决
应用进程启用过程怎样
1601浏览 • 1回复 待解决