Android 上的内部、外部、可移动、可采用存储的当前状态如何?

Mik*_*nen 7 storage android android-sdcard

多年来我一直在浏览 Android 文档,但我无法理解 Google 认为以下术语当前的含义。有谁知道以下解释是否正确?

传统上,内部存储是指无法删除的设备内部闪存,应用程序始终具有对该区域的读/写访问权限,无需任何特殊权限。不支持应用程序与其他应用程序共享内部存储的内容,也不支持用户通过 MTP 下载内部存储的内容。(仍然可以在没有 root 的情况下通过adb backup解压缩备份文件来下载这些文件。但是,这不能在设备上独立完成。)

外部存储是指所有应用共享的存储区域。通常默认的相机存储文件夹放置在该区域。实际后端可能是主板上的内部不可拆卸闪存芯片或部分或全部可拆卸 MicroSD 卡,具体取决于 Android 版本和设备制造商配置。现代 Android 要求应用程序请求读取或写入此区域的权限。Android 8.0 或更高版本正式不支持使用整个 MicroSD 卡作为外部存储。传统上,这是通过 MTP 发布的存储区域,但让事情变得更复杂的是,当通过 MTP 查看时,某些设备可能将其称为“内部存储”,而可移动存储将被称为“SD 卡”。

可移动存储是指所有应用共享的存储区域。这与外部存储不同,要求在现代 Android(版本 8.0 或更高版本?)中使用 MediaStore API。应用程序应准备好随时因 MicroSD 卡被卸载或权限被撤销而失去对这些文件的访问权限。

可采用存储是一个广义术语,Android 允许使用 MicroSD 卡来扩展设备上的存储空间。实际上,这改变了上面的实现,使用所采用的MicroSD卡来存储内部存储外部存储中的数据中的数据。有些人认为停止使用任何 MicroSD 卡作为可采用存储的唯一方法是对设备进行出厂重置。根据我的经验,可以将应用程序和数据从可采用存储移动到正常位置,然后“忘记”用作可采用存储的 MicroSD 卡。显然,除非实际可用的设备闪存能够在没有 MicroSD 卡提供的空间的情况下保存所有数据,否则这不会成功。

也可以看看:

开放性问题(假设上述解释):

  • 外部存储是否会被完全删除(Android 10 或 11)?
  • 应用程序开发人员可以假设有关返回目录的实际后端的任何信息吗getExternalFilesDir()
  • 应用程序开发人员可以对内部存储的性能做出任何假设吗?如果我理解正确的话,应用程序查看的内部存储实际上可能由非常慢的 MicroSD 卡支持。
  • 保存逻辑上应该可供所有应用程序使用的文档的文件的推荐方法是什么?(相当于 Windows 中的“我的文档”。)假设用户认为这些是真实的文档,并且不希望在卸载用于创建这些文件的应用程序时它们会消失。
  • 应用程序开发人员是否必须使用存储访问框架来处理所有事情?
  • 让所有应用程序都遵循新标准的计划是什么?
  • 这个计划要持续多久?如果我没理解错的话,Android 4.4、5.5、8.0 和 10.0 中的规则已经发生了变化。

更新:有人似乎投票结束了这个,因为他或她认为正确的答案是基于意见的。我相信上述问题可以通过参考公开的文档或源代码来回答。关键是找到这些来源很困难,而这个问题就是关于找到这些来源。