Android 存储路径那点事

在4.4(API19)以前,手机自身带的存储卡就是内部存储,而扩展的SD卡就是外部存储。但是从4.4的系统开始,手机将机身存储(手机自身带的存储叫做机身存储)在概念上分成了”内部存储internal” 和”外部存储external” 两部分。

分类

1555056697633-bed0858d-7d47-47b9-8f3d-eca769816843.png

1555061934230-56a8103a-e4d6-4c1f-a400-93fe9d226097.png

(图源水印)

私有目录: 路径包含包名,应用卸载后会被清空。

示例

1555056040444-2c518ebc-4035-45bd-a6e9-229e1af33726.png

(图源: https://www.liaohuqiu.net/cn/posts/storage-in-android/)

Android Q 变更

摘自华为《安卓Q版本兼容性适配指导v2.3》文档

1555060094784-79affb63-8402-4eec-a744-4c9a73374c31.png

  • Android Q为每个应用程序在外 部存储设备提供了一个独立的存储沙箱,应用通过路径创建的文件都保存在应用的沙箱目录
  • 共享集合:如果应用的一些文件是用户选择下载保存的,应用卸载的时候用户不希望删除,这部分文件开发者可以通过MediaProvider 接口保存在公共共享集合,包括: 照片、视频、音乐和下载集合
  • 新的访问多媒体文件的权限:应用读写自己创建的文件不需要权限 ,但是如果需要读取其他应用创建的多媒体文件就需要申请对应的权限,通过MediaProvider接口读取
  • 读写其他应用的下载公共集合文件需要使用SAF的方式读写
  • 不要通过路径进行文件操作
    • Q版本无法通过路径读写应用沙箱外的所有文件,需要读写沙箱外的多媒体文件,需要使用MediaProvider接口
    • Q版本通过MediaProvider查询图片的“_data”字段值只有图片是应用沙箱内的图片,返回的才是文件的真实路径,其他图片返回的是非文件真实路径,通过该路径判断文件是否存在会出现问题
  • 适配指导:https://developer.android.google.cn/preview/privacy/scoped-storage
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 大海,如果失去了巨浪的翻滚,就会失去澎湃的雄浑;沙漠,如果失去了飞沙的狂舞,就会失去炎狂的壮观;人生,如果仅仅去求...
    为事业而奋斗阅读 251评论 0 2
  • 一叶秋帆过,扑簌听风落。 闻菊淡云斜,暮月抚银波。 当窗思故人,灯上弦悠阔。
    芸瑶Luna阅读 164评论 0 0
  • 今天腊月二十二了,感觉不到快过年的感觉。 小时候,过年意味着穿新衣服,吃大鱼大肉,爸妈休息陪我们玩。 而现在,随时...
    闲情逸致1314阅读 194评论 0 1