有没有什么方法可以从文件选择器的意图中获得Google Sheets文件ID



在我的Android应用程序中,我希望用户打开Google Sheets文档,将数据从中导入应用程序数据库。

  1. 使用ACTION_GET_CONTENT/ACTION_OPEN_DOCUMENT和MIME过滤器application/vnd.google-apps.spreadsheet很容易选择文件。(它将是一个虚拟文件。(

  2. 使用Google Sheets API基于Drive文件id(具有用户粒度的spreadsheets.readonly范围(也很容易获得Google Sheets文档的内容:

Sheets.Builder(transport, jsonFactory, appCredential)
.build()
.spreadsheets()
.get(fileid)
.execute()

但第一步返回设备上文件的Uri,第二步需要驱动器文件件id
如何从第一个中确定第二个?

我发现的唯一一个糟糕的解决方案是使用Google Drive API:我用我从意图中得到的名称搜索Sheets文件,然后得到它的id……它需要drive.metadata.readonly范围,这是一个受限范围,doh。。。无论如何,这不是一个可行的解决方案
我可以从虚拟文件的uri下载pdf,但它不适合导入数据。

如果有人知道答案,万分感谢!

这取决于fileId的类型。(我不熟悉那个特定的API(。

通常,您需要使用ContentResolverUri转换为一些可用的类型,如InputStreamFileDescriptor等。

还有一个DocumentFile实用程序类用于处理DocumentURI。

最新更新