java - Android 13 - 访问 PDF 或其他类型文件的权限

标签 java android storage android-permissions file-permissions

根据需要,对于面向 Android 13+ 的应用,我对媒体文件使用以下权限请求:

<uses-permission android:name="android.permission.READ_MEDIA_IMAGES"/>
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO"/>
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO"/>

我遇到的问题是,此权限似乎不足以访问存储中保存的其他类型的文件,例如 pdf、贴纸等。 当我想访问此类文件时,由于缺乏适当的权限,它将通过 FileNotFoundException 进行访问。

例如:

File file = new File(<path_to_File>);
FileInputStream fileInputStream = new FileInputStream(file); // Here it will through the exception

对于其他类型的文件,它工作得很好。

有什么解决办法吗?

<uses-permission android:name="android.permission.READ_MEDIA_IMAGES"/>
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO"/>
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO"/>

最佳答案

解决方案是使用 SAF 和例如 ACTION_OPEN_DOCUMENT 让用户选择文件。

根本不需要任何权限。

关于java - Android 13 - 访问 PDF 或其他类型文件的权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76581641/

相关文章:

java - 从另一个类中获取值(value)

android - 为什么它在开始监听之前不休眠 3 秒?

android - 当 eclipse 启动并且我的设备已连接时,adb 崩溃

android - 为什么我的应用程序在启动照片 Intent 之后但在调用 onActivityResult() 之前崩溃?

windows - Angular 2 如何从存储中删除列表项

java - Jain-Sip 身份验证

java - java中将变量值从一个类传递到另一个类

cordova - 如何等待回调函数返回?

java - BufferReader 卡在 readline() 中

windows - SQLLOCALDB 问题