鸿蒙如何向用户申请授权?如何二次授权?

第一步:在module.json5中配置对应权限(这里以麦克风权限为例)

        1.必须配置对应的授权信息

        名称:"name": "ohos.permission.MICROPHONE",

        使用场景(可以为空):"usedScene": {},

        使用原因:"reason": "$string:reason_microphone"

第二步:写一个申请授权的类方法

        1.创建一个获取访问控制模块的实例。

        const atManager = abilityAccessCtrl.createAtManager()

        2.调用实例对象

        const result = await atManager.requestPermissionsFromUser(ctx, permissions)

        上下文获取方法(非UI页面)const ctx = AppStorage.get<Context>('context')

        传入上下文和权限数组(因为可能会向用户一次性申请多个权限)

        3.调用result 对象,检查授权结果result.authResults是否授权成功

        4.最后记得导出实例

二次授权需调用(requestPermissionOnSetting) API

具体代码如下:

import { abilityAccessCtrl, Permissions } from '@kit.AbilityKit'

class Permission {
  // 用户授权方法, 需要传入要授权的权限数组
  async requestPermissions(permissions: Permissions[]) {
    const atManager = abilityAccessCtrl.createAtManager()
    const ctx = AppStorage.get<Context>('context')
    if (ctx) {
      const result = await atManager.requestPermissionsFromUser(ctx, permissions)
      // AlertDialog.show({ message: JSON.stringify(result, null, 2)})
      return result.authResults.every(res => res === abilityAccessCtrl.GrantStatus.PERMISSION_GRANTED)
    }
    return false
  }
  // 二次授权
  async openPermissionSetting(permissions: Permissions[]) {
    const atManager = abilityAccessCtrl.createAtManager()
    const ctx = AppStorage.get<Context>('context')
    if (ctx) {
      const authResults = await atManager.requestPermissionOnSetting(ctx, permissions)
      return authResults.every(res => res === abilityAccessCtrl.GrantStatus.PERMISSION_GRANTED)
    }
    return false
  }
}
export const permission = new Permission()

在需要授权的页面直接调用此方法,能轻松实现向用户申请授权和二次授权。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值