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)

三,说明

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

相关推荐
胡琦博客3 小时前
「21天开源鸿蒙PC先锋训练营」03详细解读鸿蒙PC命令行适配
华为·开源·harmonyos
waeng_luo3 小时前
[鸿蒙2025领航者闯关] Scroll滑动容器与布局优化技巧
harmonyos·鸿蒙·鸿蒙2025领航者闯关·鸿蒙6实战·开发者年度总结
waeng_luo4 小时前
[鸿蒙2025领航者闯关] 响应式布局与屏幕适配方案
华为·harmonyos·鸿蒙2025领航者闯关·鸿蒙6实战·开发者年度总结
我是华为OD~HR~栗栗呀5 小时前
华为OD-C面经-23届学院哦
java·c++·python·华为od·华为·面试
kirk_wang7 小时前
Flutter Image Editor 适配鸿蒙HarmonyOS平台实践
flutter·华为·harmonyos
m0_685535088 小时前
大疆光学工程师面试经验
华为·光学·光学设计·光学工程·镜头设计
fatiaozhang95279 小时前
湖北联通华为悦盒EC6109-U_海思MV200_TTL烧录固件包
华为·电视盒子·刷机固件·机顶盒刷机·华为悦盒ec6109-u
国霄9 小时前
(7)Kotlin/Js For Harmony——ArkTs 开发架构
harmonyos
盐焗西兰花9 小时前
鸿蒙学习实战之路:Dialog 组件封装最佳实践
学习·华为·harmonyos
q_30238195569 小时前
华为Atlas310意图识别如何实现?
华为·自然语言处理·bert