如何使用第三方库中的@pura/harmony-utils(V1.3.3)申请授权工具类一

2025-06-20 17:16:57
167次阅读
0个评论
最后修改时间:2025-07-20 22:38:31

本指南介绍如何利用 @pura/harmony-utils 三方库简化 OpenHarmony 应用中的权限检查和申请流程。

1. 安装依赖库

首先,需要在您的 OpenHarmony 项目中安装 @pura/harmony-utils 库。在项目根目录下执行以下命令:

ohpm install @pura/harmony-utils

安装验证: 安装完成后,请检查项目的 oh-package.json5 文件。如果您在该文件的 dependencies 部分看到类似下面的代码片段,即表示库已成功安装:

2. 配置应用权限

为了在应用中使用特定的设备能力(如相机、麦克风、位置等),必须在应用的配置文件 module.json5 中声明相应的权限。请注意,部分敏感权限(如 CAMERAMICROPHONELOCATION 等)除了在此声明外,还需要在应用市场文档中心提交权限使用说明文档并通过审批。

将以下 requestPermissions 配置添加到您的 module.json5 文件中:

    "requestPermissions": [
      {
      "name": "ohos.permission.INTERNET"
      },
      {
        "name": "ohos.permission.CAMERA",
        "reason": "$string:Webcampermissions",
        "usedScene": {
          "abilities": ["EntryAbility"],
          "when": "always"
        }
      },
      {
        "name": "ohos.permission.MICROPHONE",
        "reason": "$string:Microphonepermissions",
        "usedScene": {
          "abilities": ["EntryAbility"],
          "when": "always"
        }
      },
      {
        "name": "ohos.permission.LOCATION",
        "reason": "$string:Locationpermissions",
        "usedScene": {
          "abilities": ["EntryAbility"],
          "when": "always"
        }
      },
      {
      "name": "ohos.permission.APPROXIMATELY_LOCATION",
      "reason": "$string:locationreson",
      "usedScene": {
        "abilities": ["EntryAbility"]
      }
     },
      {
        "name": "ohos.permission.READ_MEDIA",
        "reason": "$string:ReadMediaFiles",
        "usedScene": {
          "abilities": ["EntryAbility"],
          "when": "always"
        }
      },
      {
        "name": "ohos.permission.READ_CALENDAR",
        "reason": "$string:Calendarpermissions",
        "usedScene": {
          "abilities": ["EntryAbility"],
          "when": "always"
        }
      }
    ],

配置权限说明字符串

在 string.json 文件中,为上面权限配置中使用的 reason 键(例如 $string:Webcampermissions)提供对应的说明文字。这些文字会展示给用户,解释为什么需要该权限:

    {
      "name": "Webcampermissions",
      "value": "需要摄像头权限进行拍照"
    },{
      "name": "Microphonepermissions",
      "value": "需要麦克风权限进行录音"
    },{
      "name": "Locationpermissions",
      "value": "需要位置权限提供定位服务"
    },{
      "name": "ReadMediaFiles",
      "value": "需要读取媒体文件权限"
    },{
      "name": "Calendarpermissions",
      "value": "需要读取日历权限"
    },{
      "name": "locationreson",
      "value": "获取当前位置"
    }

3. 检查权限状态(示例:相机权限)

在需要使用权限的功能点(例如打开相机前),可以使用 PermissionUtil.checkPermissions 方法来检查用户是否已经授予了该权限。该方法返回一个 Promise,解析结果为布尔值 (true 表示已授权,false 表示未授权)。

let p: Permissions = 'ohos.permission.CAMERA'; //相机
PermissionUtil.checkPermissions(p).then((result) => {
    ToastUtil.showToast(`检测是否授权,结果:${result}`);
})

4. 检查并申请授权(示例:相机权限)

更常见的场景是:先检查权限,如果未授权,则向用户弹出申请弹窗。PermissionUtil.checkRequestPermissions 方法封装了这个流程。它返回一个 Promise,解析结果为布尔值,表示最终用户是否授予了权限。

let p: Permissions = 'ohos.permission.CAMERA'; //相机
PermissionUtil.checkRequestPermissions(p).then((grant) => {
  ToastUtil.showToast(`检测并申请授权,结果:${grant}`);
    if (!grant) {
      WantUtil.toAppSetting(); //拒绝权限,跳转APP设置页面
    }
})

关键点说明:

  • checkRequestPermissions 会先检查权限状态。
  • 如果未授权,它会自动弹出系统标准的权限申请对话框。
  • 用户操作(允许或拒绝)后,Promise 解析出最终结果 (grant)。
  • 如果结果是 false,通常意味着用户拒绝了权限(可能包含“禁止后不再询问”)。此时引导用户到应用设置页面 (WantUtil.toAppSetting()) 是常见的做法,让用户在那里手动开启权限。

本文档所使用类的源地址链接entry/src/main/ets/pages/utils/PermissionUtilPage.ets · 桃花镇童长老/harmony-utils - Gitee.com****

本文档所介绍的第三方库源地址链接OpenHarmony三方库中心仓

##三方SDK##数码相机##

收藏00

登录 后评论。没有帐号? 注册 一个。