打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
EasyAndroid基础集成组件库之:EasyPermissions 动态权限申请库

Android架构进阶学习路线图

阿里入职的第一年,这是你想要的职场生活吗?

架构面试进阶大揭秘:5月份优秀文章精选推荐,值得推荐


作者:Haoge
链接:https://juejin.im/post/5b1a2a326fb9a01e5d32f208


什么是EasyAndroid?

EasyAndroid是一款专注于提供各种基础组件的集成库

作为一款集成组件库,此库中所集成的组件,均包含以下特点:

  1. 精简: 作为一款集成库,我不希望有那种大组件,尽量控制好集成库的大小。不要有冗余代码

  2. 内聚: 尽量减少甚至避免单一组件对别的模块进行依赖。做到组件间独立。


什么是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实例进行流程唤醒
           return@rational true|false } .request(activity)


举个具体例子


效果展示

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
目前最流行的运行时权限请求框架PermissionsDispatcher、RxPermissions和easypermissions的使用和对比
setAudioSource failed 异常问题
Android 权限组件设计
Exported service does not require permission警告
android 应用程序清单
Android: requires android.permission.READ
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服