Android 如何启用有目的地拾取Google文档文件(保存在Google Drive上)?

Android 如何启用有目的地拾取Google文档文件(保存在Google Drive上)?,android,google-drive-api,google-docs,google-drive-android-api,Android,Google Drive Api,Google Docs,Google Drive Android Api,我想在我的Android应用程序中选择保存在Google Drive上的Google文档文件,然后从中读取一些数据(但这超出了这个问题的范围)。因此,首先,我只想单击该文件并获得一些回调。我关注Google Drive Android API的弃用和迁移到 我设法得到了谷歌驱动器的文件列表对话框,但我不能选择谷歌文档文件(我可以看到它们,但它们不活跃,点击它们)。同时,我可以选择其他类型的文件-例如,PDF、PNG,如果我设置它们的MIME类型 现在我使用这段代码: val pickerInte

我想在我的Android应用程序中选择保存在Google Drive上的Google文档文件,然后从中读取一些数据(但这超出了这个问题的范围)。因此,首先,我只想单击该文件并获得一些回调。我关注Google Drive Android API的弃用和迁移到

我设法得到了谷歌驱动器的文件列表对话框,但我不能选择谷歌文档文件(我可以看到它们,但它们不活跃,点击它们)。同时,我可以选择其他类型的文件-例如,PDF、PNG,如果我设置它们的MIME类型

现在我使用这段代码:

val pickerIntent = Intent(Intent.ACTION_OPEN_DOCUMENT)
pickerIntent.addCategory(Intent.CATEGORY_OPENABLE)
pickerIntent.type = "*/*"
val mimeTypes = arrayOf(
     "application/pdf", // works
     "image/png", //works
     // none of MIME below works
     "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
     "application/vnd.google-apps.document",
     "application/vnd.google-apps.file"
)
pickerIntent.putExtra(Intent.EXTRA_MIME_TYPES, mimeTypes)
在过去,他们使用MIME“text/plain”作为示例,因此这对我没有帮助

我尝试了几种我可以找到的MIME类型(例如),但它们都没有解决这个问题


应该为此使用什么MIME类型?或者问题不在MIME类型中

我发现了问题的根源

问题是Google文档文件-与“真实”PDF | PNG文件不同,它们是所谓的“虚拟”文件,因为它们没有二进制表示

我的问题的明确答案是文档中的下一个注释:

注意:由于应用程序无法使用openInputStream()方法直接打开虚拟文件,因此在创建包含操作\u打开\u文档或操作\u打开\u文档\u树操作的意图时,不要使用类别\u可打开类别

所以,在我删除下一行之后,问题就解决了:

pickerIntent.addCategory(Intent.CATEGORY_OPENABLE)
此外,我可以承认,Google Doc的picker过滤器在下一个MIME中运行良好:

"application/vnd.google-apps.document"

我发现了问题的根源

问题是Google文档文件-与“真实”PDF | PNG文件不同,它们是所谓的“虚拟”文件,因为它们没有二进制表示

我的问题的明确答案是文档中的下一个注释:

注意:由于应用程序无法使用openInputStream()方法直接打开虚拟文件,因此在创建包含操作\u打开\u文档或操作\u打开\u文档\u树操作的意图时,不要使用类别\u可打开类别

所以,在我删除下一行之后,问题就解决了:

pickerIntent.addCategory(Intent.CATEGORY_OPENABLE)
此外,我可以承认,Google Doc的picker过滤器在下一个MIME中运行良好:

"application/vnd.google-apps.document"