当前位置:首页 > 行业动态 > 正文

安卓存储路径文件

安卓存储路径分类

安卓系统将存储分为多种类型,不同存储类型对应不同的路径和用途:

存储类型 路径示例 特点
内部存储(Internal) /data/data/包名/ 应用私有目录,其他应用不可访问
外部存储(External) /storage/emulated/0/ 公共存储,所有应用可读写(需权限)
SD卡(若存在) /storage/extSdCard/ 可移除存储,需动态申请权限
应用缓存目录 /data/data/包名/cache/ 存放临时文件,系统可自动清理
应用文件目录 /data/data/包名/files/ 应用私有文件存储空间
系统根目录 系统核心文件,普通应用无权限访问

常见文件路径与用途

文件类型 典型路径 说明
应用安装文件 /data/app/包名-1/ 包含APK文件和dex优化后的代码
数据库文件 /data/data/包名/databases/ SQLite数据库默认存储位置
SharedPreferences /data/data/包名/shared_prefs/ XML格式配置文件存储路径
图片/视频 /storage/emulated/0/DCIM/(相机拍摄)
/storage/emulated/0/Pictures/(微信等保存)
READ_EXTERNAL_STORAGE权限
下载文件 /storage/emulated/0/Download/ 浏览器、下载器默认路径
缓存文件 /data/data/包名/cache/ 小文件缓存,可被系统回收

权限管理与存储限制

  1. 运行时权限(Android 6.0+)

    安卓存储路径文件  第1张

    • 外部存储读写需动态申请:
      <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
      <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    • Android 10+ 对非媒体文件强制使用MediaStore API,直接文件路径访问受限。
  2. Scoped Storage(Android 10+)

    • 应用默认只能访问自身创建的文件,需声明requestLegacyExternalStorage兼容旧逻辑。
    • 访问公共目录(如DCIM)仍需通过ContentResolverMediaStore

特殊存储场景处理

场景 解决方案
跨应用共享文件 使用getExternalFilesDir()获取应用专属外部存储目录,或通过ContentProvider共享数据
大文件存储(如视频) 建议使用外部存储(getExternalFilesDir(Environment.DIRECTORY_MOVIES)
兼容Android 10+存储 使用MediaStore API写入媒体文件,或设置android:requestLegacyExternalStorage="true"

相关问题与解答

问题1:Android 10以上如何正确保存图片到相册?

解答
需通过MediaStore插入媒体文件,并添加FILE_CREATOR权限,示例代码:

ContentValues values = new ContentValues();
values.put(MediaStore.Images.Media.RELATIVE_PATH, "DCIM/Camera");
values.put(MediaStore.Images.Media.IS_PENDING, 1); // 防止扫描前被删除
Uri uri = contentResolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
// 写入文件后设置IS_PENDING为0

问题2:如何判断设备是否挂载了SD卡?

解答
通过Context.getExternalFilesDirs()检查返回数组长度,或使用Environment.getExternalStorageState()

if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) {
    // SD卡已挂载
}
0