RxPermission源码笔记

只需要写如下代码,即可使用rxPermission实现动态获取权限,不需要activity重写任何代码

RxPermission rxPermission = new RxPermission(this);
rxPermission.requestPermission(Permission.Camera)
            .suscrible(permission -> {
                if(permission.isGranted()) {
                    // go ahead
                }
             });       

调用方式非常友好,此处有两个问题
1. 为什么此处activity请求权限不需要覆写onRequestPermissionsResult
2. 如何做到用户点击”同意”按钮后才向下游发射数据

在了解RxPermission的源码后发现

针对第一个问题,我们只需要在调用方Activity中插入一个StubFragment,然后用该StubFragment来调用requestPermissions方法,这样我们可以在StubFragment中onRequestPermissionsResult中接收结果,对于调用方activity来说完全无感知。

针对第二个问题,rxPermission.requestPermission会返回PublishSubject,用户点击”同意”按钮后会调用onNext发射数据,调用方就能收到是否有权限的消息。

publishSubject.onNext();
publishSubject.onComplete();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值