HarmonyOS-录音权限

应用权限-录音

应用权限

  • 系统提供了一种允许应用访问系统资源(如:通讯录等)和系统能力(如:访问摄像头、麦克风等)的通用权限访问方式,来保护系统数据(包括用户个人数据)或功能,避免它们被不当或恶意使用

  • 应用申请敏感权限时,必须填写权限使用理由字段,敏感权限通常是指与用户隐私密切相关的权限,包括地理位置、相机、麦克风、日历、健身运动、身体传感器、音乐、文件、图片视频等权限。参考向用户申请授权。

  • 分类

    • system_grant
      • 在配置文件中,声明应用需要请求的权限后,系统会在安装应用时自动为其进行权限预授予,开发者不需要做其他操作即可使用权限。
    • user_grant
      • 在配置文件中,声明应用需要请求的权限,且要设置需要使用的场景+使用原因
      • 调用 requestPermissionsFromUser() 方法后,应用程序将等待用户授权的结果。如果用户授权,则可以继续访问目标操作。如果用户拒绝授权,则需要提示用户必须授权才能访问当前页面的功能,并引导用户到系统应用“设置”中打开相应的权限。可参考二次向用户申请权限 requestPermissionOnSetting()
    • 对所有应用开放权限列表

权限配置

  • module.json5配置

    "requestPermissions": [
      { "name": "ohos.permission.INTERNET" },
      {
         // 权限名称
        "name": "ohos.permission.MICROPHONE",
         // 使用场景
        "usedScene": {},
         // 原因
        "reason": "$string:reason_microphone"
      }
    ],
    
    • 配置reason资源:“$string:reason_microphone”
  • 图片示例

    1. 在这里插入图片描述

    2. 在这里插入图片描述

    3. 在这里插入图片描述

具体实现

封装权限工具,提供请求用户权限,拉起用户权限设置的能力

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)
      // 返回授权结果
      // abilityAccessCtrl.GrantStatus.PERMISSION_GRANTED 已经授权
      return result.authResults.every(result => result == 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(result => result === abilityAccessCtrl.GrantStatus.PERMISSION_GRANTED)
    }
    return false
  }
}

export const permission = new Permission()

使用权限工具

  async aboutToAppear() {
      // 创建授权对象窗口
    const flag = await permission.requestPermissions(['ohos.permission.MICROPHONE'])
    if(!flag){
       // 创建二次授权对象窗口
      permission.openPermissionSetting(['ohos.permission.MICROPHONE'])
    }
  }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不想404.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值