如何通过 ID 查找 google 驱动器文件?

How to find a google Drive file by ID?

我正在开展一个项目,我需要将文件上传到 google 云端硬盘,以便使用其他应用下载它。

我想使用我通过创建文件获得的驱动器 ID 来稍后查找它,但这似乎不起作用。

我使用了 Google 中的示例来获取 ID:

  @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {

        switch (requestCode) {

            case REQUEST_CODE_CREATOR:
                if (resultCode == RESULT_OK) {

                     driveId =  data.getParcelableExtra(
                            OpenFileActivityBuilder.EXTRA_RESPONSE_DRIVE_ID);
                    showMessage("File created with ID: " + driveId);


                }

                break;
            default:
                super.onActivityResult(requestCode, resultCode, data);
                break;
        }
    }

到目前为止这似乎有效,我正在获取驱动器 ID。

在此之后,我想使用示例 "Files: get" from the Google Developers-page 对其进行测试,但出现以下错误:

 {
    "error": {
    "errors": [
    {
     "domain": "global",
     "reason": "notFound",
     "message": "File not found: CAESABiCASCQ1OnN-VMoAA==",
     "locationType": "other",
     "location": "file"
    }
     ],
     "code": 404,
     "message": "File not found: CAESABiCASCQ1OnN-VMoAA=="
     }
      }

这个ID好像不是找文件的id

一定有什么我错过了,但我不知道是什么。

我是编程新手,尤其是 Google 和 Android,如果有人能帮助我解决问题,我将非常高兴。

谢谢。

你的方法有两个问题。

1/ 您不能将 DriveId 用于 Android 应用程序实例之外的任何内容,您必须使用 ResourceId(参见

2/ 您在上面显示的 DriveId 是 GooPlaySvcs 在提交(上传)对象之前返回的 'preliminary' DriveId(参见 SO 22874657)。此外,在提交对象之前,您无法获得有效的 ResourceId。

另见 SO 33355665,

如果您打算使用 ResourceId 'outside'(到不同的应用程序),则没有问题。如果您决定在同一个 Android 应用程序中使用此 ResourceId,混合使用两个 API (GDAA and REST),您可能会引入延迟问题,因为 GDAA 是您的应用程序和应用程序之间的 'buffering' 层REST api(您已经 运行 与您的 'invalid' DriveId 合而为一)。

祝你好运