我正在试验Android Marshmallow中引入的“Adoptable存储”,我需要一些关于预期行为和应用程序应该如何处理“Adoptable存储”的指导。
现在移动:当用户选择此选项时,由“/storage/emulated/0/Android/data/PACKAGE_NAME/files”返回的路径是,它实际上指向微SD卡的文件系统。
稍后移动:当用户选择此选项时,由“/storage/emulated/0/Android/data/PACKAGE_NAME/files”返回的路径是,它实际上指向内部嵌入式内存的文件系统。
在这两种情况下,应用程序只能看到一个存储空间,而另一个存储空间则完全不能被应用程序访问来存储数据,例如照片、视频等。当微SD卡被格式化为“Adoptable存储”时,有没有方法访问内部和微型SD卡的存储路径?
除了这份文件之外,我找不到关于应用程序应该如何处理这个采用的存储的详细文档。有什么应用需要使用的API吗?
示例:
比方说,如果用户手机有32 GB的内部内存和32 GB的微SD卡。如果该卡被格式化为“便携式存储”,则用户可以使用32 to (内部)和32 to (微型SD卡)来存储数据。
但是,如果用户将卡格式化为“内部内存”,则用户只能将数据(照片/视频/音乐等)保存到这32 GB存储位置中的任何一个,而不能同时保存到这两个位置。该系统提供了在存储位置之间“迁移数据”的选项(内部迁移到微SD卡,反之亦然),但应用程序只能使用32 GB的存储空间(用户实际上失去了32 GB的存储空间来存储Media文件,只能用于安装应用程序?)
这是预期的行为吗?
注意:使用的测试设备- Moto X Play和HTC 10 -都运行Android 6.0.1

发布于 2017-01-08 18:06:31
getExternalFilesDir()总是指向外部存储,它可能可用,也可能不可用。使用getFilesDir()动态获取应用程序当前存储位置的路径。
不要存储这方面的结果,因为Adoptable可能随时移动您的应用程序。从医生那里:
如果将调用应用程序移动到采用的存储设备,则返回的路径可能会随着时间的推移而改变,因此只应保留相对路径。
https://stackoverflow.com/questions/38247547
复制相似问题