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