安卓存储文件含系统分区(OS核心 文件、驱动等)和数据分区(应用数据、数据库等),外部存储如SD卡存多媒体等,应用安装目录在/data/app,含APK及应用专属文件,各部分因版本和定制可能有
安卓存储文件的基本结构
安卓系统的存储分为多种类型,主要包括:
- 内部存储(Internal Storage):设备内置的闪存空间,包含系统分区和应用私有数据。
- 外部存储(External Storage):可移动存储介质(如SD卡)或集成的共享存储空间。
内部存储
路径 | 说明 |
/data/data/包名 | 应用私有目录,存储应用安装文件、数据库、缓存等。 |
/storage/emulated/0 | 虚拟的“内部存储”挂载点,实际指向外部存储的根目录。 |
外部存储
路径 | 说明 |
/storage/self_primary | Android 10+ 的原生外部存储路径(不可移除存储)。 |
/mnt/media_rw/SD卡名称 | SD卡的挂载路径(需物理插入SD卡)。 |
常见存储目录与用途
目录路径 | 用途 |
/sdcard/DCIM | 相机拍摄的图片/视频默认存储位置。 |
/sdcard/Pictures | 手动保存的图片或截图。 |
/sdcard/Download | 浏览器、应用下载的安装包或文件。 |
/sdcard/Android/data/包名 | 应用在外部存储中的私有数据目录(需应用主动创建)。 |
/sdcard/Android/obb | 应用扩展文件(如游戏资源包)。 |
存储权限与访问规则
权限组
- READ_EXTERNAL_STORAGE:读取外部存储文件。
- WRITE_EXTERNAL_STORAGE:写入或删除外部存储文件。
- MANAGE_EXTERNAL_STORAGE(Android 11+):管理所有外部存储文件的权限。
运行时权限
- Android 6.0+ 需动态申请权限。
- Android 10+ 引入“分区存储”(Scoped Storage),应用默认只能访问自身创建的文件。
特殊目录限制
/Android/data/
下的文件需对应应用安装后才能访问。 - 系统目录(如
/system
)需 root 权限才能修改。
存储文件的管理方式
通过文件管理器
- 内置文件应用可访问公共目录(如 DCIM、Download)。
- 第三方文件管理器(如 ES 文件浏览器)可访问应用私有目录(需授权)。
通过 ADB 命令
# 查看内部存储文件
adb shell ls /data/data/包名/files
# 查看外部存储文件
adb shell ls /sdcard/Download
通过代码访问
// 获取应用外部存储目录
File externalDir = getExternalFilesDir(null); // Android 4.4+
常见问题与解决方案
问题 | 原因 | 解决方案 |
应用安装后找不到文件 | 文件存储在应用私有目录或外部存储的特定路径。 | 使用文件管理器或 ADB 查找对应路径。 |
Android 10+ 无法直接访问外部文件 | 分区存储限制,应用默认只能访问自有文件。 | 使用 ACTION_OPEN_DOCUMENT 或请求 MANAGE_EXTERNAL_STORAGE 权限。 |
SD卡文件丢失 | SD卡被卸载或格式化。 | 定期备份重要文件到内部存储或云存储。 |
相关问题与解答
问题1:如何访问其他应用在外部存储中的私有数据?
解答:
Android 10+ 默认禁止应用直接访问其他应用的外部存储数据,若需共享文件,可通过以下方式:
- 使用
ACTION_OPEN_DOCUMENT
让用户手动选择文件。 - 请求
MANAGE_EXTERNAL_STORAGE
权限(需谨慎使用,可能被应用商店拒审)。
问题2:为什么 Android 11+ 的 SD卡插入后无法显示文件?
解答:
Android 11+ 对外部存储(如 SD卡)加强了沙盒限制:
- SD卡必须格式化为“内部存储”或“便携存储”。
- 若设置为“便携存储”,需通过
Storage Access Framework
访问文件。 - 若设置为“内部存储”,则与手机存储合并,但仍需遵守分区存储规则