【发布时间】: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 权限,并且如果在不同的文件中存在同名文件也无济于事同一用户云端硬盘的文件夹。
【问题讨论】:
-
Google Picker API 不是 Google Drive API 的一部分。它是一个单独的 API,您可以并且应该使用它。见developers.google.com/drive/api/v3/picker
标签: android google-api google-drive-api android-contentresolver