Google Drive API v3:从Android内容URI获取FileID

Google Drive API v3: get FileID from Android content URI

我的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。当我尝试此答案时,正则表达式与任何内容都不匹配。

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

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

我尝试搜索从ContentResolver获得的名称和模仿类型,但这有2个问题:它需要files.metadata.readonly权限,并且如果文件名不同则无济于事同一用户的云端硬盘的文件夹。


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

请参阅https://developers.google.com/drive/api/v3/picker

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

Google云端硬盘选择器(JavaScript)不适用于移动设备/无法响应