HarmonyOS:HMPermission权限请求框架

前段时间利用空余时间写了一个权限请求库:HMPermission。

一,简介

HMPermission 是鸿蒙系统上的一款权限请求框架,封装了权限请求逻辑,采用链式调用的方式请求权限,简化了权限请求的代码。

二,使用方法

1,安装

在Terminal 窗口里输入命令行:

复制代码
ohpm i @sy/hmpermission

2,在配置文件中申明权限

在对应模块的module.json5文件中申明权限

复制代码
  "requestPermissions": [
      {
        "name": "ohos.permission.CAMERA",
        "reason": "$string:camera_permission_reason",
        "usedScene": {
          "abilities": [
            "EntryAbility"
          ],
          "when": "inuse"
        }
      }
    ]

name:权限名称;

reason:申请权限的原因。

说明:申请的权限是user_grant 权限时必填,并且需要做多语言适配

usedScene:权限使用场景。

说明:

  • abilities:使用权限的UIAbility或者ExtensionAbility组件的名称。

  • when:调用时机。可不填,填写时使用固定值"inuse"

注意:已在子模块中申请的权限,无需在主项目重复添加,权限将在整个应用生效。

详细说明请参考官方文档:文档中心

3,动态申请权限(以相机权限为例)

复制代码
private permissions: Array<Permissions> = [
    'ohos.permission.CAMERA'
  ]
private context: common.UIAbilityContext = getContext() as common.UIAbilityContext

HMPermission
     .with(this.context)
     .permission(this.permissions)
     .onGranted(() => {
        console.error(TAG, 'onGranted')
     }).onDenied((deniedArr: Array<Permissions>) => {
        console.error(TAG, 'onDenied deniedArr = ' + JSON.stringify(deniedArr))
     }).request()

permission()方法传入权限数组,支持批量申请权限;

onGranted():用户授权成功回调;

onDenied():用户拒绝授权时回调。回调中会将未同意的权限返回;

申请权限时,会主动校验该权限是否已授权,所以无需再校验是否已授权。如果需要校验是否已授权,可调用校验方法:

复制代码
HMPermission.hasPermission(this.permissions)

用户拒绝授权,如果想在系统设置中引导用户打开授权,可以调用

复制代码
HMPermission.openSystemSettings(this.context)

三,说明

该权限请求库已开源,项目地址,持续更新迭代中,有任何问题欢迎指出。

相关推荐
whysqwhw1 小时前
鸿蒙分布式投屏
harmonyos
whysqwhw2 小时前
鸿蒙AVSession Kit
harmonyos
whysqwhw4 小时前
鸿蒙各种生命周期
harmonyos
whysqwhw5 小时前
鸿蒙音频编码
harmonyos
whysqwhw5 小时前
鸿蒙音频解码
harmonyos
whysqwhw5 小时前
鸿蒙视频解码
harmonyos
whysqwhw5 小时前
鸿蒙视频编码
harmonyos
ajassi20005 小时前
开源 Arkts 鸿蒙应用 开发(十八)通讯--Ble低功耗蓝牙服务器
华为·开源·harmonyos
前端世界6 小时前
在鸿蒙应用中快速接入地图功能:从配置到实战案例全解析
华为·harmonyos
江拥羡橙8 小时前
【基础-判断】HarmonyOS提供了基础的应用加固安全能力,包括混淆、加密和代码签名能力
安全·华为·typescript·harmonyos