前段时间利用空余时间写了一个权限请求库: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)
三,说明
该权限请求库已开源,项目地址,持续更新迭代中,有任何问题欢迎指出。