Android 6.0 RxJava 2+RxPermissionsランタイムアクセス
Androidのアクセス権の問題はずっと面倒な問題で、以下はアクセス権を取得するサードパーティライブラリRxJava 2+RxPermissionをお勧めします.使いやすいです.
step1
依存を追加:
step2
コードで使用する(カメラ+録音権限の例):
複数の権限の申請には2つのケースがあります:1、複数の権限の取得状況が統一的に返され、すべての権限が通過した場合に成功します.そうしないと失敗します.2、複数の権限の取得状況が別々に返され、各権限の申請処理状況が得られます.
ケース1:request(複数の権限をカンマで区切る)
ケース2:requestEach(複数の権限をカンマで区切る)
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{
//
}
}
}
});