我尝试通过执行以下操作从 Android Q 上的下载文件夹中读取文件:
File downloadDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
File f = new File(downloadDir, "some-existing-file");
if(!f.exists()) {
throw new IllegalStateException();
}
Uri furi = Uri.fromFile(f);
try {
ParcelFileDescriptor des = getContentResolver().openFileDescriptor(
furi, "r", null);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
我还在android:requestLegacyExternalStorage="true"
清单中设置了请求WRITE_EXTERNAL_STORAGE
和READ_EXTERNAL_STORAGE
运行时权限。
该文件存在,但是当尝试打开文件描述符时,出现异常:
java.io.FileNotFoundException: open failed: EACCES (Permission denied)
。
我阅读了Android Q 存储中所做的更改,但无法弄清楚如何在没有用户交互的情况下读取文件。
谢谢!