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)
}
}