android6.0权限问题

android6.0之后,需要每次使用权限时候都需要询问用户是否需要允许权限,这有别于之前的版本。

这里我们使用RxJava+RxPermission的方法进行适配。

 

1.首先引用开源项目RxPermissions

compile 'com.tbruyelle.rxpermissions:rxpermissions:0.9.4@aar'

2.创建对象

RxPermissions rxPermissions = new RxPermissions(this);

3.直接申请单个权限

//直接申请单个权限
        rxPermissions.request(Manifest.permission.CAMERA)
                .subscribe(new Action1<Boolean>() {
                    @Override
                    public void call(Boolean granted) {
                        if(granted)
                        {
                            //已经获取权限,6.0之前默认返回true
                        }
                        else {
                            //没有获取权限
                        }
                    }
                });

4.直接申请多个权限

//直接申请多个权限
        rxPermissions.request(Manifest.permission.CAMERA, Manifest.permission.RECORD_AUDIO)
                        .subscribe(new Action1<Boolean>() {
                            @Override
                            public void call(Boolean granted) {

                            }
                        });

5.点击按钮申请权限

//点击按钮申请权限
        RxView.clicks(findViewById(R.id.btnCamera))
                .compose(rxPermissions.ensureEach(Manifest.permission.CAMERA))
                .subscribe(new Action1<Permission>() {
                    @Override
                    public void call(Permission permission) {
                        Log.i(TAG, "Permission result " + permission);
                        if(permission.granted)
                        {
                            //已经获取权限,6.0之前默认返回true
                        }
                        else {
                            //没有获取权限
                        }
                    }
                });

demo

 

posted @ 2018-01-04 10:34  不骄不傲  阅读(157)  评论(0编辑  收藏  举报