Google Drive API v3:从Android内容URI获取文件ID

时间:2019-08-09 18:52:21

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

我的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到ID功能时,我得到404。当我尝试this answer时,正则表达式不会不匹配任何东西。

我需要翻译的内容示例:

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

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

1 个答案:

答案 0 :(得分:1)

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

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

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

Google Drive Picker (JavaScript) not mobile friendly / responsive