效果图
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/e95d3279e79534e024c595d1254cecc3.png)
一、导入依赖
implementation 'com.yanzhenjie:permission:1.1.2'
- 同步后出现一下报错
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/48e4be0d4db69c88602cea03e437665b.png)
- 这是因为混合支持库。通过添加
android.enableJetifier=true
选择androidX作为您的支持库 , 如下图:再次同步即可成功
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/ba54cb49a91a3f9e9a810810433c44fe.png)
二、添加权限
<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;
}
}
}
};