EasyAndroid基础集成组件库之:EasyPermissions 动态权限申请库
热文导读 | 点击标题阅读
作者:Haoge
链接:https://juejin.im/post/5b1a2a326fb9a01e5d32f208
什么是EasyAndroid?
EasyAndroid是一款专注于提供各种基础组件的集成库
作为一款集成组件库,此库中所集成的组件,均包含以下特点:
精简: 作为一款集成库,我不希望有那种大组件,尽量控制好集成库的大小。不要有冗余代码
内聚: 尽量减少甚至避免单一组件对别的模块进行依赖。做到组件间独立。
什么是EasyPermissions
EasyPermissions是开源库EasyAndroid的基础组件之一,用于对Android 6.0及以上版本,进行动态权限申请
若你不需要其他集成组件。只想用EasyPermissions。可以直接拷贝集成库中的EasyPermissions类到项目中,直接进行使用。
特性
api链式调用,调用链更丝滑~
支持定制权限申请说明弹窗
支持同时申请多个权限
多权限申请时进行去重
支持在任意线程进行权限申请
流程图
下面的图为通用的动态权限申请流程图。EasyPermissions的执行流程也是与此一致的
用法举例
1. 申请写入联系人权限:(单一权限申请)
EasyPermissions.create(Manifest.permissions.WRITE_CONTACTS)
.request(activity)
PS: 请注意此处的request方法传入的Activity,需要为当前栈顶层的Activity实例,否则将可能导致无法接收权限返回信息的问题
2. 同时申请多个权限
EasyPermissions.create(Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.WRITE_CALENDAR,
Manifest.permission.WRITE_CONTACTS
).request(this)
3. 接收权限申请结果
EasyPermissions.create(permission1, permission2 ... permissionN)
.callback {grant:Boolean -> // grant为true表示所有权限均申请成功}
.request(activity)
4. 定制权限申请说明弹窗
权限申请说明
部分的流程为上方流程图中的Rational部分。这部分流程系统只提供了shouldShowRequestPermissionRationale
方法提示开发者:这里需要向用户展示申请此权限的原因,以达到更好的用户体验。
所以,EasyPermissions也对应提供了rational方法,进行方便的创建说明提醒:
EasyPermissions.create(permissions)
.retional {
permission:String, // 需要进行用户提示的权限
chain: RationalChain -> // 内部API。若需要提示时,则需要使用此链表在
//用户操作后接入后续流程
// 返回true。表示此permission权限将会进行提醒说明,
// 先暂时对权限申请流程进行阻塞,待后续用户操作后,通过chain实例进行流程唤醒
[email protected] true|false
}
.request(activity)、
举个具体例子
效果展示
如你有好的文章想和大家分享欢迎投稿,直接向我投递文章链接即可
最后,欢迎大家加入我们的知识星球,这期是到2019年3月10日结束,所以越早加入越好,现在加入的球友快1000人了,到1000人时将大幅提价(还有最后几十个名额了),所以快上车!
微信扫描或者点击上方二维码领取Android\Python\AI\Java等高级进阶资源
更多学习资料点击下面的“阅读原文”获取