RxPermissions 获取运行时权限

一、简介

RxPermissions是基于RxJava开发的用于帮助在Android 6.0中处理运行时权限检测的框架。在Android 6.0中,系统新增了部分权限的运行时动态获取。而不再是在以前的版本中安装的时候授予权限。

RxPermissions项目地址:https://github.com/tbruyelle/RxPermissions

二、依赖

compile ‘com.tbruyelle.rxpermissions:rxpermissions:0.7.0@aar’

三、使用

方式一
// 当只有一个权限需要申请时
private RxPermissions rxPermissions = RxPermissions.getInstance(context);

rxPermissions.request(Manifest.permission.WRITE_EXTERNAL_STORAGE).subscribe(new Action1<Boolean>() {
                    @Override
                    public void call(Boolean granted) {

                        if(granted){
                            // 权限申请成功
                        }

                    }
                });


//  当需要有多个权限申请时
rxPermissions.request(Manifest.permission.WRITE_EXTERNAL_STORAGE,
                        Manifest.permission.READ_PHONE_STATE).subscribe(new Action1<Boolean>() {
                    @Override
                    public void call(Boolean granted) {
                        if(granted){
                            Toast.makeText(LongPicMainActivity.this, "通过权限", Toast.LENGTH_SHORT).show();
                        }
                    }
                });

注意申请的权限必须都在AndroidManifest.xml进行添加。对于申请的多个权限,只有用户都同意时,granted才会返回ture,call中的代码永远只会执行一次。

方式二
rxPermissions.requestEach(Manifest.permission.WRITE_EXTERNAL_STORAGE,
                        Manifest.permission.READ_PHONE_STATE).subscribe(new Action1<Permission>() {
                    @Override
                    public void call(Permission permission) {
                        if(permission.name.equals(Manifest.permission.WRITE_EXTERNAL_STORAGE)){
                            Toast.makeText(LongPicMainActivity.this, "WRITE_EXTERNAL_STORAGE 获取成功", Toast.LENGTH_SHORT).show();
                        }else if(permission.name.equals(Manifest.permission.READ_PHONE_STATE)){
                            Toast.makeText(LongPicMainActivity.this, "READ_PHONE_STATE 获取成功", Toast.LENGTH_SHORT).show();
                        }
                    }
                });

call中的代码运行次数与申请权限打的个数相等。permission对象中有granted变量,保存用户是否允许也即是否授权。

四、Android权限大致如下

group:android.permission-group.CALENDAR 日历
permission:android.permission.READ_CALENDAR 读取日历
permission:android.permission.WRITE_CALENDAR 写入日历

group:android.permission-group.CAMERA 照相机
permission:android.permission.CAMERA

group:android.permission-group.CONTACTS 通讯录方面
permission:android.permission.WRITE_CONTACTS 写入通讯录
permission:android.permission.GET_ACCOUNTS 访问通讯录权限
permission:android.permission.READ_CONTACTS 读取通讯录

group:android.permission-group.LOCATION 位置
permission:android.permission.ACCESS_FINE_LOCATION 获取位置
permission:android.permission.ACCESS_COARSE_LOCATION 获取粗略定位

group:android.permission-group.MICROPHONE 扩音器;麦克风
permission:android.permission.RECORD_AUDIO 录音

group:android.permission-group.PHONE 电话方面
permission:android.permission.READ_CALL_LOG 看电话记录
permission:android.permission.READ_PHONE_STATE 读取手机状态
permission:android.permission.CALL_PHONE 打电话
permission:android.permission.WRITE_CALL_LOG 编写调用日志
permission:android.permission.USE_SIP 使用SIP
permission:android.permission.PROCESS_OUTGOING_CALLS 过程输出调用   permission:com.android.voicemail.permission.ADD_VOICEMAIL 添加语音信箱

group:android.permission-group.SENSORS 传感器
permission:android.permission.BODY_SENSORS 体传感器
 
group:android.permission-group.SMS 信息
permission:android.permission.READ_SMS 读取信息   
permission:android.permission.RECEIVE_WAP_PUSH 收到WAP推送
permission:android.permission.RECEIVE_MMS 接收彩信
permission:android.permission.RECEIVE_SMS 收信息
permission:android.permission.SEND_SMS 发信息
permission:android.permission.READ_CELL_BROADCASTS 读广播

group:android.permission-group.STORAGE 存储
permission:android.permission.READ_EXTERNAL_STORAGE 读取外部存储器  
permission:android.permission.WRITE_EXTERNAL_STORAGE 写外部存储器
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值