RxPermission 集成使用

前面说了 AndPermission 的集成使用了,那里说的全一些,这里就简单记录下 RxPermission 的使用就得了,详细的权限问题去看:AndPermission 集成使用

添加依赖

    compile 'com.tbruyelle.rxpermissions2:rxpermissions:0.9.5@aar'
    compile 'io.reactivex.rxjava2:rxjava:2.0.1'
    compile 'io.reactivex.rxjava2:rxandroid:2.0.1'

RxPermission 一看名字就知道是用 Rxjava 的,关于 Rxjava 部分的依赖就得自己手动添加了

API

        RxPermissions rxPermissions = new RxPermissions(this);
        rxPermissions.requestEach(Manifest.permission.CAMERA)
                .subscribe(permission -> {
                    if (permission.granted) {
                        show("用户给权限啦");
                        return;
                    }
                    if (permission.shouldShowRequestPermissionRationale) {
                        show("用户不给权限");
                        return;
                    }
                    show("弹窗不显示");
                });

没啥难度,看过 AndPermission 了,RxPermission 的回调处理就简单了,依然是用户同意,用户拒绝,用户不再显示权限弹窗了这3种,根据 API 来就行

RxPermission 的优点在于可以和 Rxbinding 结合,这是官方文档的例子

// Must be done during an initialization phase like onCreate
RxView.clicks(findViewById(R.id.enableCamera))
    .compose(rxPermissions.ensure(Manifest.permission.CAMERA))
    .subscribe(granted -> {
        // R.id.enableCamera has been clicked
    })

注意点

需要注意的是 RxPermission 只能接受 activity 对象,为啥呢,我们跟一下代码


RxPermission 集成使用_第1张图片
Snip20180419_10.png

很明显 RxPermission 是在目标 activity 里面添加了一个 fragment 用于拦截权限申请结果。

你可能感兴趣的:(RxPermission 集成使用)