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

Android:READ_EXTERNAL_STORAGE权限能否读取系统目录及特定文件夹?

Android存储权限相关问题解答

1. 仅拥有READ_EXTERNAL_STORAGE权限,是否足以获取系统文件夹中的文件列表?

答案是否定的,这个权限的作用范围仅覆盖外部存储的公共媒体/文档目录(比如Download/、Pictures/、Movies/这类用户可直接访问的公共文件夹),并不能覆盖所有系统文件夹。

系统文件夹分多种类型,不同目录的访问限制完全不同:

  • 像/system这类系统核心目录,不管有没有该权限,普通第三方应用都无法访问;
  • 应用私有目录(比如其他APP的/data/data/[包名])、系统敏感目录(比如/data/app、/data/local/tmp)也不在READ_EXTERNAL_STORAGE的管辖范围内。

2. 已授予READ_EXTERNAL_STORAGE时,能否获取data/app或data/local/tmp目录下的所有文件列表?空指针异常是否因权限导致?需要何种权限?

首先明确:普通第三方应用就算持有READ_EXTERNAL_STORAGE权限,也完全无法访问/data/app或/data/local/tmp目录。

你遇到的空指针异常,本质原因就是没有权限访问这些目录:当尝试调用listFiles()(或类似获取文件列表的方法)访问无权限的目录时,方法会返回null,这时再调用list.length()自然就触发空指针了。

至于需要的权限,分两种情况:

  • 针对/data/app:这是系统存放已安装应用APK的目录,属于内部存储的系统敏感区域。普通第三方APP无论申请什么常规权限都无法直接访问,除非你的应用是系统签名应用(和系统使用同一签名),或者设备已经获取了ROOT权限(通过su命令切换到root身份后才能读取)。
  • 针对/data/local/tmp:这是系统的临时文件目录,同样属于系统敏感区域,普通APP没有访问权限,同样需要ROOT或者系统签名身份才能读取。

另外补充:从Android 10(API 29)开始引入的分区存储机制,进一步收紧了外部存储的访问权限,就算是公共目录的访问也有更严格的限制,更不用说这类系统内部敏感目录了。

内容的提问来源于stack exchange,提问作者Toan Le

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 07:58:01