使用权限请求库EasyPermissions 在Manifest文件中添加所需的权限:
添加依赖项:
implementation 'pub.devrel:easypermissions:3.0.0'
在需要访问文件的地方请求权限:
String[] perms = {Manifest.permission.READ_EXTERNAL_STORAGE};
if (EasyPermissions.hasPermissions(this, perms)) {
// 已获得权限
// 在这里访问文件
} else {
// 权限尚未授予,使用EasyPermissions请求权限
EasyPermissions.requestPermissions(
this,
"需要访问文件权限",
101,
perms);
}
在Activity或Fragment中添加此代码:
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this);
}
对权限授予结果进行处理:
@Override
public void onPermissionsGranted(int requestCode, @NonNull List perms) {
// 权限已授予,可以进行文件访问操作
}
@Override
public void onPermissionsDenied(int requestCode, @NonNull List perms) {
// 权限被拒绝,显示提示信息或可选的解释
if (EasyPermissions.somePermissionPermanentlyDenied(this, perms)) {
new AppSettingsDialog.Builder(this).build().show();
// 如果用户勾选了 “不再询问” 选项,弹出一个对话框,提示用户手动授予权限
} else {
// 在次请求权限
EasyPermissions.requestPermissions(
this,
"需要访问文件权限",
101,
Manifest.permission.READ_EXTERNAL_STORAGE);
}
}
这样,我们就可以在应用中以安全和可控的方式访问PDF或其他文件类型。
参考资料: https://github.com/googlesamples/easypermissions