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)

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