我正在试验Android Marshmallow中引入的“Adoptable storage”,我需要一些有关预期行为以及应用程序应如何处理“Adoptable storage”的指导。
一个。立即行动: 当用户选择此选项时,getExternalFilesDirs返回的路径 是“/ storage / emulated / 0 / Android / data / PACKAGE_NAME / files”,它实际上指向 micro SD卡的文件系统。
湾稍后移动: 当用户选择此选项时,getExternalFilesDirs返回的路径 是“/ storage / emulated / 0 / Android / data / PACKAGE_NAME / files”,它实际上指向内部嵌入式内存的文件系统。
在这两种情况下,应用程序只能看到一个存储,而应用程序完全无法访问其他存储,以存储照片,视频等数据。是否有任何方法可以访问内部存储路径当micro SD卡格式化为“Adoptable storage”时,微型SD卡?
除了this documentation之外,我找不到有关应用程序应如何处理此采用的存储的详细文档。是否有应用程序需要使用的API?
示例:
假设用户手机的内存为32 GB,micro SD卡为32 GB。 如果卡格式化为“便携式存储”,则32GB(内部)和32GB(微型SD卡)可供用户存储数据。
但是如果用户将卡格式化为“内部存储器”,则用户可以将数据(照片/视频/音乐等)仅保存到此32 GB存储位置中的任何一个,但不能保存到这两个位置。系统在存储位置(内部到微型SD卡和反之)之间提供“迁移数据”选项,但应用程序只能使用32 GB的存储空间(用户有效地丢失了32 GB的存储空间来存储媒体文件和可以只用于安装应用程序?)。
这是预期的行为吗?
答案 0 :(得分:1)
getExternalFilesDir()
始终指向外部存储,可能有也可能不可用。使用getFilesDir()
动态获取应用程序当前存储位置的路径。
不要存储此结果,因为Adoptable Storage可能会随时移动您的应用。来自文档:
如果将调用应用程序移动到已采用的存储设备,则返回的路径可能会随时间发生变化,因此只应保留相对路径。