1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| Android 存储目录访问与写入能力总表
公共媒体目录 (DCIM, Pictures等) Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES) ✅ 但Android 10+需通过MediaStore写入 Android 9-:WRITE_EXTERNAL_STORAGE Android 10+:MediaStore无权限要求 ✔️ 自动显示 ❌ 保留 用户可见的照片、视频、音乐
应用私有目录
(外部存储) context.getExternalFilesDir(Environment.DIRECTORY_PICTURES) ✅ 始终可写 ❌ 无需权限 ❌ 需手动扫描 ✔️ 删除 应用专属文件,无需共享
应用缓存目录 context.getExternalCacheDir() ✅ 可写但空间有限 ❌ 无需权限 ❌ 不扫描 ✔️ 删除(可能被系统提前清理) 临时文件、缓存
物理SD卡目录 ContextCompat.getExternalFilesDirs(context, null)[1] ⚠️ 需用户手动授权(部分厂商特殊权限) 依赖厂商实现 ❌ 需手动扫描 ❌ 保留 大容量文件(如无人机拍摄原片)
MediaStore专属目录 (Android 10+) MediaStore.Images.Media.getContentUri() + RELATIVE_PATH ✅ 通过ContentResolver写入 ❌ 无需权限(但需声明READ_EXTERNAL_STORAGE读取现有文件) ✔️ 自动显示 ❌ 保留 兼容Android 10+的媒体文件存储
旧版SD卡根目录 (不推荐) Environment.getExternalStorageDirectory() ⚠️ Android 10+只读(需MANAGE_EXTERNAL_STORAGE特殊权限) Android 9-:WRITE_EXTERNAL_STORAGE Android 10+:需特殊申请 ✔️ 但可能被系统限制 ❌ 保留 仅旧版兼容时使用
|