android - 有没有办法从文件选择器 Intent 中获取 Google 表格文件 ID?

标签 android android-intent google-sheets-api

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

  • 使用 ACTION_GET_CONTENT 选择文件很容易/ACTION_OPEN_DOCUMENT和 MIME 过滤器 application/vnd.google-apps.spreadsheet . (这将是一个虚拟文件。)
  • 使用基于 Drive 字段 id 的 Google Sheets API 获取 Google Sheets 文档的内容也很容易(用户授予的 spreadsheets.readonly 范围):
  • Sheets.Builder(transport, jsonFactory, appCredential)
       .build()
       .spreadsheets()
       .get(fileid)
       .execute()
    
    但第一步返回 文件的 Uri 在设备上,第二步需要 驱动器文件的文件 ID .
    如何从第一个中确定第二个?
    我发现的唯一糟糕的解决方案是使用 Google Drive API:我使用从 Intent 中获得的名称搜索 Sheets 文件,并得到它的 id...它需要 drive.metadata.readonly范围,这是一个受限制的范围,而且……无论如何,这不是一个可行的解决方案……
    我可以从虚拟文件的uri下载pdf,但不适合导入数据。
    如果有人知道答案,万分感谢!

    最佳答案

    这取决于 fileId 的类型是。 (我不熟悉那个特定的 API)。
    一般情况下需要使用ContentResolver转换 Uri转换成一些可用的类型,例如 InputStream , FileDescriptor , ETC。
    还有DocumentFile使用文档 URI 的实用程序类。

    关于android - 有没有办法从文件选择器 Intent 中获取 Google 表格文件 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64206816/

    相关文章:

    android - 多种设备密度和 Xamarin Android

    java - 有目的地将 Activity 放在首位

    javascript - UpdateCellsRequest - 范围未按预期运行

    php - 在 PHP 中从数据库中按字母顺序排序

    android - 需要在线程中升级 SQLite,如何以及在何处升级?

    javascript - react-native:更改 <Picker.Item> 标签时 <Picker> 会丢失 selectedValue

    android - Intent Extras 的通用对值类型

    android - onNewIntent() 在手机唤醒之前不会触发

    javascript - 谷歌脚本: How to script an automatic import from a txt in my drive into spreadsheet?

    google-drive-api - 谷歌表格 API : Create or move Spreadsheet into Folder