Android 6.0 RxJava 2+RxPermissionsランタイムアクセス


Androidのアクセス権の問題はずっと面倒な問題で、以下はアクセス権を取得するサードパーティライブラリRxJava 2+RxPermissionをお勧めします.使いやすいです.
step1
依存を追加:
//     
    implementation 'io.reactivex.rxjava2:rxjava:2.1.3'
    implementation 'com.tbruyelle.rxpermissions2:rxpermissions:0.9.5@aar'

step2
コードで使用する(カメラ+録音権限の例):
RxPermissions rxPermissions = new RxPermissions(this);

複数の権限の申請には2つのケースがあります:1、複数の権限の取得状況が統一的に返され、すべての権限が通過した場合に成功します.そうしないと失敗します.2、複数の権限の取得状況が別々に返され、各権限の申請処理状況が得られます.
ケース1:request(複数の権限をカンマで区切る)
rxPermissions.request(Manifest.permission.CAMERA,
                Manifest.permission.RECORD_AUDIO)
                .subscribe(new Consumer() {
                    @Override
                    public void accept(Boolean aBoolean) throws Exception {
                        if (aBoolean){
                            //         
                        }else{
                            //         
                        }
                    }
                });

ケース2:requestEach(複数の権限をカンマで区切る)
rxPermissions.requestEach(Manifest.permission.CAMERA,
                Manifest.permission.RECORD_AUDIO)
                .subscribe(new Consumer() {
                    @Override
                    public void accept(Permission permission) throws Exception {
                        if (permission.name == Manifest.permission.CAMERA){
                            if (permission.granted){
                                //         
                            }else{
                                //         
                            }
                        }else if (permission.name == Manifest.permission.RECORD_AUDIO){
                            if (permission.granted){
                                //         
                            }else{
                                //         
                            }
                        }
                    }
                });