关于Android23以上权限管理神器!RxPermission的简单介绍
来源:互联网 发布:起名软件 编辑:程序博客网 时间:2024/06/05 05:25
最近在学习的时候,看到了这个权限管理的神器。RxPermission。
关于权限就不用多说了吧,总有一堆用户在我们请求权限的时候,直接选择否。当然是在我们设置的targerSdkVersion > 22 以上。
我们在APP打开的时候,一次性请求了N个权限。完了用户直接选择否否否!!!我想也很简单,因为用户不懂。看到要什么什么什么权限的,以为我们这个什么垃圾病毒软件或者要获取手机机密信息,直接就否决了。其实我在上大学下载软件的时候也是如此,你为什么需要电话权限啊?你为什么需要存储权限啊。如此。这会导致我们在开发的时候,某些需要权限的功能如果用户没给,我们忘了判断就会抛出权限错误,然后导致Crash。
以前在做权限管理的时候,比如在用户要上传头像然后获取手机内相片的时候,我们会做checkPermission的操作。然后又通过onRequestPermissionsResult然后做各种回调判断用户是否给了权限,等等操作。这样的坏处就在于代码会很散,前面check,后面回调执行部分代码。或者 check用户给了又执行什么代码。相信写过这种代码的同学,也肯定会有所体会,哪怕我们的checkPermission会写一个utils。
好了,前面说了这么多,到正题了。今天就给大家带来的这个权限管理的RxPermission的介绍。
依赖库很简单
compile 'io.reactivex.rxjava2:rxandroid:2.0.1'compile 'io.reactivex.rxjava2:rxjava:2.0.5'compile 'com.tbruyelle.rxpermissions2:rxpermissions:0.9.3@aar'当然aar文件我们还需要添加下面这个代码
allprojects { repositories { jcenter() }}既然是封装好的,那使用起来就更简单了。一看就会对不对。
new RxPermissions(this).requestEach( Manifest.permission.READ_PHONE_STATE, Manifest.permission.WRITE_EXTERNAL_STORAGE) .subscribe(new Consumer<Permission>() { @Override public void accept(Permission permission) throws Exception { if (permission.granted) { // 用户已经同意该权限 Log.e("xnm", "1"); } else if (permission.shouldShowRequestPermissionRationale) { // 用户拒绝了该权限,那么下次再次启动时,还会提示请求权限的对话框 Log.e("xnm", "2"); } else { // 用户拒绝了该权限,并且选中『不再询问』 Log.e("xnm", "3"); } } });这里说明一个,其实else if 也不用写。反正每次都会判断,如果用户同意了,那我们走下面的代码。如果用户不同意,无论用户选择那种拒绝方式,给个提示就好了。说明一下,如果不给该权限,该功能无法正常运行。就是这么简单粗暴。
再说明一个自己碰到的问题,New Permissions的时候一定要在主线程中运行。不然会抛错。
如果碰到这个bug 也很简单。在调用的时候 直接切换线程。
New Permissions(这里传入的一定是一个activity)
把传入的activity.runOnUiThread(new Runnable(){
run()...
})
当然如果你想通过service去调用那就不行了。因为我们这个是一个弹窗,必须依赖一个Activity。我这边如果是一个Service然后要去做某件事情获取权限的时候,那还是用CheckPermission。判断是否有权限,没权限给用户一个Toast。当然这种操作毕竟是比较少的。大部分情况下的权限请求都能通过RxPermissions完成。
好了,就介绍到这里,同学们继续努力。有好用的也分享给我。
- 关于Android23以上权限管理神器!RxPermission的简单介绍
- 关于Android23 及以上模拟器处理应用闪退的一些问题(权限相关)
- 关于权限管理的介绍
- 真正的一行注解处理Android23+权限
- 关于Android6.0(23以上)版本权限管理的问题
- 关于linux目录权限的简单介绍
- 6.0权限RxPermission
- RxPermission权限使用
- Android权限管理之RxPermission解决Android 6.0 适配问题
- Android权限管理之RxPermission解决Android 6.0 适配问题
- Android权限管理之RxPermission解决Android 6.0 适配问题
- Android 6.0及以上版本的运行时权限介绍
- Android 6.0及以上版本的运行时权限介绍
- Android 6.0及以上版本的运行时权限介绍
- Android 6.0及以上版本的运行时权限介绍
- 【权限管理】适配6.0以上权限相关
- AspectJ 简单的权限管理
- 简单的权限管理系统
- js-计算器实现
- 【web前端】可筛选[输入搜索]的select(重写)
- 深入讲解Android Property机制
- 编译后ijkplayer使用文档
- 数据蒋堂 | JOIN提速
- 关于Android23以上权限管理神器!RxPermission的简单介绍
- 火星探险问题
- 独家 | 一文读懂贝叶斯分类算法(附学习资源)
- Robot Framework 学习_4(python+Robot Framework)
- QQ空间掉帧率优化实战
- Instrument使用总结
- makefile很重要
- 分布式计算入门知识
- 字符设备号申请与注册