正常情况下直接使用下面的代码就没问题:
RxPermissions rxPermissions = new RxPermissions(this);
rxPermissions.request(Manifest.permission.WRITE_EXTERNAL_STORAGE)
.subscribe(new Consumer<Boolean>() {
@Override
public void accept(Boolean aBoolean) throws Exception {
if (aBoolean) {
//用户同意使用write权限
}else {
TipUtil.logE("Activity","用户拒绝使用权限");
}
}
});
但是如果你加了这句话:
.compose(this.<Boolean>bindToLifecycle())
完整的是这样:
RxPermissions rxPermissions = new RxPermissions(this);
rxPermissions.request(Manifest.permission.WRITE_EXTERNAL_STORAGE)
.compose(this.<Boolean>bindToLifecycle())
.subscribe(new Consumer<Boolean>() {
@Override
public void accept(Boolean aBoolean) throws Exception {
if (aBoolean) {
//用户同意使用write权限
}else {
TipUtil.logE("Activity","用户拒绝使用权限");
}
}
});
那么当用户第一次点击,跳出权限提示框的时候,就是用户点击了确认或者取消,他都不会回调监听方法,也就是你的方法不会去执行。
所以需要注意下。