我正在重构我的备份/恢复功能以使用存储访问框架。我的备份是带有自定义扩展名 (.dtt) 的 zip 文件。如果我尝试使用以下代码打开选择器,我的 .dtt 文件可以从本地下载目录中选择,但不能从 Google Drive 中的目录中选择。如何使文件甚至可以从 Google 云端硬盘中选择?
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("application/octet-stream");
startActivityForResult(intent, OPEN_SAF_PICKER_REQUEST_CODE);
注意如何从本地“下载”目录中选择备份文件,但在 Google 云端硬盘“备份”目录中显示为灰色:
我知道这种行为是可以实现的,因为 NovaLauncher 的恢复功能运行正常。
最佳答案
我找到了可行的解决方案。看起来 Google 云端硬盘在上传文件时将我的文件的 mime 类型更改为“application/x-zip”。所以我需要考虑这两种 MIME 类型,以便让我的文件在两个地方都可选择:
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("*/*");
String[] mimeTypes = {"application/octet-stream","application/x-zip"};
intent.putExtra(Intent.EXTRA_MIME_TYPES, mimeTypes);
startActivityForResult(intent, OPEN_SAF_PICKER_REQUEST_CODE);
如果有更好的解决方案,或者这个解决方案存在某种问题,我很乐意听到。
关于android - 将 mimetype 'application/octet-stream' 与 SAF 选择器一起使用适用于本地文件,但不适用于 Google Drive 中的相同文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61516204/