Android6.0----権限申請RxPermissions

3466 ワード

前にAndroid 6と書いてあります.0権限紹介と権限単一,複数の申請は純粋なJavaコードを用い,本稿では主にサードパーティライブラリを用いて権限申請を実現する.
サードパーティ製ライブラリRxPermissionsを使用して6.0権限を申請します.
RxPermissionsライブラリアドレス:https://github.com/tbruyelle/RxPermissions
bulid.gradle導入:
  compile 'com.tbruyelle.rxpermissions2:rxpermissions:0.9.4@aar'
  compile "io.reactivex.rxjava2:rxjava:2.0.0"


権限に関する知識、権限表はブログを参照してください:
    Android6.0----アクセス権管理
    Android6.0-------パーミッション申請管理(単一および複数のパーミッション申請)
前提:APPはAndroid 6.0 (API level 23)以上のデバイスで実行され、targetSdkVersion>=23の場合、システムは自動的に動的権限管理ポリシーを採用します.
まず効果図を見てみましょう:(注:許可されていない場合は電話や写真をクリックすると直接フラッシュバックし、6.0は手動で許可しなければなりません.開発時に許可されていない場合は、ユーザーに新しい許可から判断して提示することができます)
        
 
 
上図:
 
1:単一ライセンス、電話ライセンス.
 
2:電話、SDカード、写真撮影許可の3つを一緒に許可する
 
単一の権限
//        M
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                   //    

                    rxPermissions.request(Manifest.permission.CAMERA)
                            .subscribe(new Observer() {
                                @Override
                                public void onSubscribe(Disposable d) {

                                }
                                @Override
                                public void onNext(Boolean value) {
                                    if(value){
                                        showToast("    ");
                                    }else {
                                        showToast("    ");
                                    }
                                }

                                @Override
                                public void onError(Throwable e) {

                                }

                                @Override
                                public void onComplete() {

                                }
                            });
                }

複数の権限
rxPermissions.requestEach(Manifest.permission.CAMERA,
     Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.CALL_PHONE)
                         .subscribe(new Observer() {
                            @Override
                            public void onSubscribe(Disposable d) {

                            }
                            @Override
                            public void onNext(Permission permission) {

                                if (permission.name.equals(Manifest.permission.CAMERA)){
                                    showToast("    ");
                                }
                            }
                            @Override
                            public void onError(Throwable e) {

                            }

                            @Override
                            public void onComplete() {

                            }
                        });

前提:AndroidManifest:
 
    //  
      //  
       //sd 

このケースはサードパーティRxPermissionsによって書かれているので、このライブラリのコードを見てみましょう.
 
ケースソースのダウンロード