我正在开展一个项目,我需要将文件上传到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,如果有人能帮我解决问题,我会非常高兴。
感谢。
答案 0 :(得分:2)
您的方法存在两个问题。
1 /您不能将DriveId用于Android App实例以外的任何内容,您必须使用 ResourceId (请参阅SO 32210970)
2 /您在上面显示的DriveId是GooPlaySvcs在提交(上传)对象之前返回的'初步'DriveId(请参阅SO 22874657)。此外,在提交对象之前,您无法获得有效的ResourceId。
如果您打算将ResourceId带到“外部”(到另一个应用程序),您就可以了。如果您决定在同一个Android应用中使用此ResourceId,混合两个Apis(GDAA和REST),您可能会引入延迟问题,因为GDAA是您应用和应用之间的'缓冲'层REST api(你已经遇到了'无效的'DriveId)。
祝你好运