RxPermissions

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)

    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章