要解决“Android - 尽管有内联权限和清单权限,但无法从存储中读取文件“Permission Denied””的问题,您可以按照以下步骤进行操作:
// 在onCreate或任何需要权限访问的地方
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, REQUEST_CODE);
}
请确保您在Activity中实现了onRequestPermissionsResult
方法,并处理权限请求结果。
Environment.getExternalStorageDirectory()
来获取外部存储路径。示例代码如下:File file = new File(Environment.getExternalStorageDirectory(), "file.txt");
file.setReadable(true); // 设置文件可读
file.setWritable(true); // 设置文件可写
请注意,如果您尝试访问应用程序的私有存储路径(例如getFilesDir()
或getCacheDir()
),则无需请求运行时权限。
try {
FileInputStream fis = new FileInputStream(file);
// 读取文件内容
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
通过检查权限、请求运行时权限、使用正确的文件路径、检查文件权限和处理异常,您应该能够成功从存储中读取文件。