Android 11 打开失败:EACCES(权限被拒绝)

新手上路,请多包涵

我正在开发一个应用程序。我在其中将不同的文件类型(例如 docx、pdf、zip)上传到 WAMP 服务器。下面是文件到我的内部存储的路径。

/storage/emulated/0/WhatsApp/Media/WhatsApp Documents/api.txt

我已经在 Manifest 文件中添加并允许存储权限,并在运行时读取文件。但是,没有可用的内部存储权限请求。

 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

对于 Android 10,我也使用了这个属性

android:requestLegacyExternalStorage="true"

但是当我从内部存储读取文件进行上传时,我在 Android 11 操作系统上(也就是三星 Galaxy 上的 Android R)遇到了这个错误。

java.io.FileNotFoundException:/storage/emulated/0/WhatsApp/Media/WhatsApp Documents/api.txt:打开失败:EACCES(权限被拒绝)

原文由 Mohammad Aamir 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 657
1 个回答

在 Android 11 设备上,您的应用只能访问自己的文件。

以及公共目录中的一般媒体。

尝试列出该 whatsapp 目录中的文件,您会发现它们没有列出。

您有两个选项来读取文件。

让用户选择带有 ACTION_OPEN_DOCUMENT 的文件。在清单中请求 MANAGE_EXTERNAL_STORAGE 并让用户确认。

普通请求不适用于 MANAGE_EXTERNAL_STORAGE 权限。用户必须在 Android 设置中接受此权限 在此处输入图像描述

原文由 Mehdi 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏