如何通过ID查找Google Drive文件?

时间:2015-10-29 12:42:43

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

我正在开展一个项目,我需要将文件上传到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。

在此之后,我想使用Example "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。

必须有一些我错过的东西,但我不知道是什么。

我是编程新手,特别是谷歌和Android,如果有人能帮我解决问题,我会非常高兴。

感谢。

1 个答案:

答案 0 :(得分:2)

您的方法存在两个问题。

1 /您不能将DriveId用于Android App实例以外的任何内容,您必须使用 ResourceId (请参阅SO 32210970

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

另请参阅SO 33355665SO 29030110

如果您打算将ResourceId带到“外部”(到另一个应用程序),您就可以了。如果您决定在同一个Android应用中使用此ResourceId,混合两个Apis(GDAAREST),您可能会引入延迟问题,因为GDAA是您应用和应用之间的'缓冲'层REST api(你已经遇到了'无效的'DriveId)。

祝你好运