RxPermissions 动态权限
依赖
//异步线程
api 'io.reactivex.rxjava2:rxjava:2.2.6'
api 'io.reactivex.rxjava2:rxandroid:2.1.1'
//权限动态申请
api 'com.tbruyelle.rxpermissions2:rxpermissions:+'
//异步线程生命周期管理
api 'com.trello.rxlifecycle2:rxlifecycle-components:2.2.1'
Main
public class MainActivity extends RxAppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//进行权限申请
RxPermissions rxPermissions = new RxPermissions(this);
//一组权限申请,同期拥有权限,将返回为true
rxPermissions.request(Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE)
.compose(this.<Boolean>bindUntilEvent(ActivityEvent.DESTROY))
.subscribe(new Observer<Boolean>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(Boolean aBoolean) {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
});
//独立回调没个权限赋予情况
rxPermissions.requestEach(Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE)
.subscribe(new Observer<Permission>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(Permission permission) {
if (permission.granted == true && permission.name.equals(Manifest.permission.CAMERA)) {
}
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
});
//ReLifecycle 异步线程生命周期关联
//关联是观察这模式-->销毁
//在Activity Fragment 销毁的时候,我们也效果他内部创建的异步线程(Rx)
}
}