Android6.0动态权限获取框架:RxPermission(基于RxJava2)
来源:互联网 发布:小米淘宝官方旗舰店 编辑:程序博客网 时间:2024/06/06 00:32
首先在build.gradle中添加依赖库
rxjava和retrofit:
compile 'io.reactivex.rxjava2:rxjava:2.x.y'compile 'io.reactivex.rxjava2:rxandroid:2.0.1'compile 'com.squareup.retrofit2:retrofit:2.2.0'compile 'com.squareup.retrofit2:converter-gson:2.2.0'compile 'com.squareup.retrofit2:adapter-rxjava2:2.2.0'
rxpermission:
compile 'com.tbruyelle.rxpermissions2:rxpermissions:0.9.4@aar'
在github地址:https://github.com/tbruyelle/RxPermissions/tree/master
master分支是基于rxjava的,然后2.x分支是基于rxjava2。
在需要动态获取权限的地方使用:
RxPermissions rxPermissions = new RxPermissions(this); rxPermissions.requestEach(Manifest.permission.READ_PHONE_STATE) .subscribe(new Consumer<Permission>() { @Override public void accept(Permission permission) throws Exception { if (permission.granted) { // 用户已经同意该权限 toast("用户已经同意该权限"); } else if (permission.shouldShowRequestPermissionRationale) { // 用户拒绝了该权限,没有选中『不再询问』(Never ask again),那么下次再次启动时,还会提示请求权限的对话框 toast("用户拒绝了该权限"); } else { // 用户拒绝了该权限,并且选中『不再询问』,提醒用户手动打开权限 toast("权限被拒绝,请在设置里面开启相应权限,若无相应权限会影响使用"); } } });
如果是多条权限直接在后边添加,也可以写成数组添加进去。上边的方法如果有多个权限的时候,会多次调用。也可以使用下边的方法:
new RxPermissions(TakePhotoActivity.this).request(Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE) .subscribe(new Consumer<Boolean>() { @Override public void accept(Boolean aBoolean) throws Exception { if (aBoolean) { //所有权限都开启aBoolean才为true,否则为false toast("权限已开启"); } else { toast("权限被拒绝,请在设置里面开启相应权限,若无相应权限会影响使用"); } } });
3 0
- Android6.0动态权限获取框架:RxPermission(基于RxJava2)
- 使用RxPermission框架对android6.0权限进行检测
- Android6.0权限快速申请(基于RxJava2更优雅)
- Android6.0动态获取权限
- android6.0动态获取权限
- android6.0动态获取权限
- Android6.0动态获取权限
- Android6.0动态获取摄像头权限(举一反三)
- Android6.0(棉花糖)以上动态获取权限方法
- android6.0以上版本动态获取权限
- android6.0以后动态获取权限
- 关于android6.0动态获取权限
- Android6.0设备上动态获取权限
- android6.0动态获取权限库
- Android6.0系统动态获取权限<一>
- Android6.0动态权限获取详解
- Android6.0动态权限
- Android6.0动态权限
- Oracle数组遍历
- Angular引入第三方库
- C
- 服务发现比较:Consul vs Zookeeper vs Etcd vs Eureka
- 高效MacBook工作环境配置
- Android6.0动态权限获取框架:RxPermission(基于RxJava2)
- hdu1175(dfs+剪枝)
- AngularJS $q.defer 延迟对象实例
- 从程序员到项目经理(14):项目经理必须懂一点“章法”
- 欢迎使用CSDN-markdown编辑器
- C++调用本地exe程序
- 计算机网络基础
- 解决maya 无法删除不可删除的节点 问题
- 一个客户端和一个服务器的多次通信