在我的Android应用程序中,我希望用户打开Google Sheets文档,将数据从中导入应用程序数据库。
-
使用
ACTION_GET_CONTENT
/ACTION_OPEN_DOCUMENT
和MIME过滤器application/vnd.google-apps.spreadsheet
很容易选择文件。(它将是一个虚拟文件。( -
使用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(。
通常,您需要使用ContentResolver
将Uri
转换为一些可用的类型,如InputStream
、FileDescriptor
等。
还有一个DocumentFile实用程序类用于处理DocumentURI。