You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android 11(API30)获全文件权限后无法访问/Android/data第三方目录如何解决

Android 11 访问/Android/data目录问题解答

错误原因

Android 11(API 30)强制启用分区存储沙箱隔离规则,即便你已经获取了MANAGE_EXTERNAL_STORAGE所有文件访问权限,系统仍然默认禁止第三方应用直接读写其他应用的/Android/data、/Android/obb私有目录,这是系统层面的安全限制,和你当前的权限申请逻辑无关,这也是你报错EACCES (Permission denied)的核心原因。

解决方案

根据使用场景选择对应方案即可:

  • 访问自有应用的/Android/data目录
    不要硬编码完整存储路径,直接调用系统API获取你的应用专属私有目录,无需额外权限即可直接读写,示例代码:
    // 返回值对应路径为 /storage/emulated/0/Android/data/你的应用包名/files
    File appPrivateExternalDir = getExternalFilesDir(null);
    
  • 访问第三方应用的/Android/data目录
    公开发布的普通应用唯一合法方案是使用存储访问框架(SAF):
    1. 发起SAF目录选择Intent,引导用户手动导航到/Android/data下的目标第三方应用目录,手动确认授权
    2. 授权成功后拿到目标目录的Uri,后续通过DocumentFile类即可对该目录下的文件进行读写操作
      如果你开发的是面向Root设备的专属工具,也可以申请Root权限后直接读写对应路径,该方案不适合上架应用商店的普通应用。

注意:通过反射、调用隐藏API绕过限制的方案已经在Android 11的后续系统补丁中被全面封堵,无法稳定使用,不建议采用。

内容的提问来源于stack exchange,提问作者fire borrower

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 12:45:02