您可以尝试以下方法来解决Android中的文件权限问题:
private static final int PERMISSION_REQUEST_CODE = 1;
// 检查是否有权限
if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
// 如果没有权限,则请求权限
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, PERMISSION_REQUEST_CODE);
} else {
// 如果已有权限,则进行文件操作
performFileOperation();
}
// 处理权限请求结果
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
if (requestCode == PERMISSION_REQUEST_CODE) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// 用户授予了权限,进行文件操作
performFileOperation();
} else {
// 用户拒绝了权限,可以显示一个提示或者禁用相关功能
}
}
}
// 执行文件操作的方法
private void performFileOperation() {
// 在这里进行文件操作,如打开文件等
}
并且在您的Activity或者Application中添加以下代码:
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.R) {
// 请求存储访问权限
Intent intent = new Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION);
intent.setData(Uri.parse("package:" + getPackageName()));
startActivity(intent);
}
使用上述方法之一,您应该能够解决“Android:尽管已授予读写权限,但无法打开文件(权限被拒绝)”的问题。