Google 驱动器 API v3:从 Android 内容 URI 获取文件 ID
Google Drive API v3: get FileID from Android content URI
我的 Android 应用程序需要从 Google 驱动器共享用户选择的文件并获取 link。 v3 Google 驱动器 API 不在 Android 上提供自己的文件选择器,所以我使用系统文件选择器。
问题是 com.google.api.services.drive.Drive.Permissions#create
需要一个文件 ID 作为第一个参数,而系统文件选择器给我的是一个内容: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 权限,如果同一用户云端硬盘的不同文件夹。
理论上,基于 Javascript 的 Google 选择器 API 在网络视图中可能是 运行。
见https://developers.google.com/drive/api/v3/picker
更新:我看到其他尝试过这种方法的人遇到了一些问题,例如调整大小以适应 phone 屏幕等,所以这不是一个好方法。
Google Drive Picker (JavaScript) not mobile friendly / responsive
我的 Android 应用程序需要从 Google 驱动器共享用户选择的文件并获取 link。 v3 Google 驱动器 API 不在 Android 上提供自己的文件选择器,所以我使用系统文件选择器。
问题是 com.google.api.services.drive.Drive.Permissions#create
需要一个文件 ID 作为第一个参数,而系统文件选择器给我的是一个内容: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 权限,如果同一用户云端硬盘的不同文件夹。
理论上,基于 Javascript 的 Google 选择器 API 在网络视图中可能是 运行。
见https://developers.google.com/drive/api/v3/picker
更新:我看到其他尝试过这种方法的人遇到了一些问题,例如调整大小以适应 phone 屏幕等,所以这不是一个好方法。
Google Drive Picker (JavaScript) not mobile friendly / responsive