【问题标题】:Google Drive API v3: get FileID from Android content URIGoogle Drive API v3:从 Android 内容 URI 获取 FileID
【发布时间】:2019-12-17 12:42:29
【问题描述】:

我的 Android 应用需要从 Google 云端硬盘共享用户选择的文件并获取链接。 v3 Google Drive API 没有在 Android 上提供自己的文件选择器,所以我使用的是系统文件选择器。

问题是com.google.api.services.drive.Drive.Permissions#create 需要一个fileID 作为第一个参数,而系统文件选择器给我的是一个内容:URI。如何查找与此 URI 对应的 fileID?当我尝试 DocumentsContract.getDocumentId(url)DocumentsContract.getDocumentId(url).split("doc=encoded=")[1](或 ContentResolver ID 列之一)作为 URI-to-ID 函数时,我得到一个 404。当我尝试 this answer 时,正则表达式不匹配任何内容。

内容示例:我需要翻译的URI是:

content://com.google.android.apps.docs.storage/document/acc%3D1%3Bdoc%3Dencoded%3DBEskNs6jf7jS24J%2FMnNdnr7fDrih03xNetfcCUsggemjSmpiWBC5

我已经尝试搜索从 ContentResolver 获得的名称和 mimetype,但这有两个问题:它需要 files.metadata.readonly 权限,并且如果在不同的文件中存在同名文件也无济于事同一用户云端硬盘的文件夹。

【问题讨论】:

标签: android google-api google-drive-api android-contentresolver


【解决方案1】:

理论上,基于 Javascript 的 Google Picker API 可以在 web 视图中运行。

https://developers.google.com/drive/api/v3/picker

更新:我看到其他尝试过这种方法的人遇到了问题,例如尺寸适合手机屏幕等,所以这不是一个好方法。

Google Drive Picker (JavaScript) not mobile friendly / responsive

【讨论】:

  • 该选择器是用 HTML 和 JavaScript 编写的,根据顶部的注释,不适用于 Android。我什至如何在我的 Android 应用中使用它?
  • 我原以为在 WebView 中启动并不难,但我发现其他人在使用这种方法时遇到了大小问题。 stackoverflow.com/questions/31918206/…我会编辑我的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-06
  • 2023-03-09
相关资源
最近更新 更多