HarmonyOS自定义权限组件--你真的弄懂了权限控制了吗? 原创 精华
前言
关于HarmonyOS的动态授权的常规操作流程和代码我之前写过一篇文章,请看《鸿蒙动态权限申请完整规范流程和操作详解(https://harmonyos.51cto.com/posts/5165)》。
权限控制是在进行HarmonyOS应用开发中非常重要的一个环节,几乎所有的商业应用中都会涉及到。我们在曾经使用的Android app应用中经常会遇到一些app会弹出各种敏感权限授权窗口提示用户授权,有些app(特别是流氓应用)经常会在第一次打开app的时候就提醒用户授予所有需要的权限,甚至一些权限跟app功能根本不相关(比如读取通讯录等),如果不授权则直接不让你使用该app,我遇到这类流氓应用一般果断卸载。而真正的开发过程中我们在权限申请的时候一般要遵循以下3个原则:
1、最小权限集,即应用中确实需要的权限才进行申请。
2、需要用到XX权限时才进行申请,即并不是app开始的时候一次性申请所有权限,而是需要用到XX特定功能必须要授权才能使用的时候(比如调用照相机),这个时候才申请该特定权限。
3、未获取用户授权的话依然能使用应用大部分功能,只是必须授权的功能无法使用。
下面我针对敏感权限申请更好的复用,编写了一个第三方开源组件,取名为XdwPermissionsLib
具体项目源码请见https://gitee.com/xdw1019/XdwPermissionsLib
XdwPermissionsLib
介绍
鸿蒙权限请求框架,提供一个符合正规权限调用流程的框架并基于链式调用(这里简称strong模式),同时提供一个并不推荐使用的简单权限框架(简称lazy模式)。
strong模式:正式项目推荐使用该模式。正规权限处理流程,用户需要检验权限并且处理校验结果的回调。
lazy模式:该模式下开发者几乎不用去编写请求权限的代码,特别是不处理回调。该模式不推荐在正式项目中使用,可以用于平时编写某些demo又不想处理权限的场景下。当然有些app不在乎用户体验,只要不授权就不让使用的情况可以使用该模式。
动态申请权限流程图
运行效果图展示:
Strong模式下的效果图:
图片待补充
lazy模式下的效果图:
图片待补充
使用说明
Strong模式:
1.引用
方式一: 通过mylibrary模块生成har包,添加har包到libs文件夹内
方式二:maven引入(待后续上传到maven中心仓库再支持)
2.定义权限组,比如
3.在需要触发权限申请的地方调用如下代码:
4.在当前的ability重写onRequestPermissionsFromUserResult方法,代码如下:
Lazy模式:
1.引用
方式一: 通过mylibrary模块生成har包,添加har包到libs文件夹内
方式二:maven引入(待后续上传到maven中心仓库再支持)
2、将需要调用的Ability继承LazyPermissionAblity,如下:
3、在当前Ability中定义权限组,并且在onStart方法的第一行调用setPermissions方法,如下:
工程结构说明
工程中总共有三个module,分别为mylibrary、entry和LazySample。
mylibrary: 自定义的第三方权限库,供外部项目调用。
entry: 用来演示mylibrary库中strong模式下的权限调用。
LazySample: 用来演示mylibrary库中lazy模式下的权限调用。
现在的应用市场太需要楼主这样优质开发者了。(有的APP要的权限实在太多了)
是滴,有些app纯粹是流氓应用,有些app是程序员懒惰,不想精细化控制权限,就是采用我代码里面的那种lazy模式来实现的
感谢夏老师的长期分享
感谢夏老师的长期分享