效果图

一、导入依赖
implementation 'com.yanzhenjie:permission:1.1.2'
- 同步后出现一下报错

- 这是因为混合支持库。通过添加
android.enableJetifier=true
选择androidX作为您的支持库 , 如下图:再次同步即可成功

二、添加权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA" />
三、请求授权
private void getPurView() {
AndPermission.with(MainActivity.this)
.requestCode(REQUEST_CODE_PERMISSION)
.permission(Permission.CAMERA,Permission.STORAGE)
.callback(permissionListener)
.rationale(new RationaleListener() {
@Override
public void showRequestPermissionRationale(int requestCode, Rationale rationale) {
AndPermission.rationaleDialog(MainActivity.this, rationale).show();
}
})
.start();
}
private PermissionListener permissionListener = new PermissionListener() {
@Override
public void onSucceed(int requestCode, @NonNull List<String> grantPermissions) {
switch (requestCode) {
case REQUEST_CODE_PERMISSION: {
if (AndPermission.hasPermission(MainActivity.this, grantPermissions)) {
Log.e("TAG---", "权限设置成功");
} else {
Log.e("TAG---", "拒绝");
AndPermission.defaultSettingDialog(MainActivity.this, REQUEST_CODE_SETTING).show();
}
break;
}
}
}
@Override
public void onFailed(int requestCode,@NonNull List<String> deniedPermissions) {
switch (requestCode) {
case REQUEST_CODE_PERMISSION: {
if (AndPermission.hasPermission(MainActivity.this, deniedPermissions)) {
Log.e("TAG---", "权限设置失败");
} else {
Log.e("TAG---", "拒绝");
AndPermission.defaultSettingDialog(MainActivity.this, REQUEST_CODE_SETTING).show();
}
break;
}
}
}
};