2

我正在试验 Android Marshmallow 中引入的“可采用存储”,我需要一些有关预期行为以及应用程序应如何处理“可采用存储”的指导。

  • 使用“格式化为内部”将“micro SD”卡格式化为可采用的存储</li>
  • 格式化完成后,会为用户提供 2 个选项,如下所示:
    1. 立即移动
    2. 稍后移动

一个。Move Now: 当用户选择该选项时,getExternalFilesDirs返回的路径是“/storage/emulated/0/Android/data/PACKAGE_NAME/files”,它实际上指向的是micro SD卡的文件系统

湾。Move Later: 当用户选择该选项时,getExternalFilesDirs返回的路径是“/storage/emulated/0/Android/data/PACKAGE_NAME/files”,它实际上指向的是Internal Embedded memory的文件系统

在这两种情况下,应用程序只能看到一个存储空间,而应用程序完全无法访问另一个存储空间来存储照片、视频等数据。有没有办法访问内部和 micro SD 的存储路径当 micro SD 卡被格式化为“Adoptable storage”时卡?

除了这个文档,我找不到关于应用程序应该如何处理这种采用的存储的详细文档。应用程序需要使用任何 API 吗?

例子:

假设用户手机有 32 GB 的内存和 32 GB 的 micro SD 卡。如果卡被格式化为“便携式存储”,用户可以使用 32GB(内部)和 32GB(微型 SD 卡)来存储数据。

但如果用户将卡格式化为“内存”,用户只能将数据(照片/视频/音乐等)保存到这 32 GB 存储位置中的任何一个,但不能同时保存到这两个位置。系统提供了在存储位置(内部到 micro SD 卡,反之亦然)之间“迁移数据”的选项,但应用程序只能使用 32 GB 的存储空间(用户实际上失去了 32 GB 的存储空间来存储媒体文件和只能用于安装应用程序?)。

这是预期的行为吗?

注意:使用的测试设备 - Moto X Play 和 HTC 10 - 均运行 Android 6.0.1 在此处输入图像描述

4

1 回答 1

1

getExternalFilesDir()总是指向外部存储,它可能可用也可能不可用。用于getFilesDir()动态获取应用程序当前存储位置的路径。

不要存储此结果,因为 Adoptable Storage 可能会随时移动您的应用程序。从文档:

如果将调用应用程序移动到采用的存储设备,则返回的路径可能会随时间变化,因此应仅保留相对路径。

于 2017-01-08T18:06:31.813 回答