![](/img/trans.png)
[英]Cannot find DriveId. Are you authorized to view this file? Android google drive integration
[英]Google Drive Android API - Invalid DriveId and Null ResourceId
我一整天都没有运气就与这段代码作斗争。 我开始关注Google的代码示例 。
问题是文件夹是成功创建的但是在onResult()中 ,我总是得到一个无效或不完整的DriveId或resourceId。 这意味着我无法在我创建的文件夹中创建文件。 这是我正在使用的代码:
public class CreateFolderActivity extends BaseDemoActivity {
@Override
public void onConnected(Bundle connectionHint) {
super.onConnected(connectionHint);
MetadataChangeSet changeSet = new MetadataChangeSet.Builder()
.setTitle("MyAppFolder").build();
Drive.DriveApi.getRootFolder(getGoogleApiClient()).createFolder(
getGoogleApiClient(), changeSet).setResultCallback(callback);
}
final ResultCallback<DriveFolderResult> callback = new ResultCallback<DriveFolderResult>() {
@Override
public void onResult(DriveFolderResult result) {
if (!result.getStatus().isSuccess()) {
showMessage("Error while trying to create the folder");
return;
}
// this value is always invalid with ending == operators
Log.d("DRIVEID", "Created a folder: " + result.getDriveFolder().getDriveId());
}
};
}
每当我运行此代码时,我会得到以下不完整的ID:
CAESABi2VyCCzdWOuVMoAQ==
我不知道这里发生了什么!
我已经谷歌了,并阅读添加听众来听取完成事件,但似乎没有一个工作。
我在这方面看到了几乎类似的问题,但它们都不适用于我。
在应用程序创建后,我通过浏览器手动复制了FolderId,然后粘贴到我的android代码,应用程序成功创建了一个文件。 但这不是事情应该如何运作。
我想等待同步完成,如果是,如何完成?
先感谢您!
您可以在此处找到问题的答案。 你得到的DriveId没问题,但你不应该直接处理它。 它是一个' 初步 'DriveId,在提交对象后发生变化(再次参见SO 22874657 )。 你可以测试它比较你得到的DriveId和你将进入'onCompletion(CompletionEvent事件)'的DriveId。
这只是GDAA逻辑的副作用之一,使您免受在线/离线网络状态的影响,从而导致无法预测的延迟。 你只需要依靠回调。
但我很惊讶您不能立即将此“初步”DriveId(如果是文件夹)用作另一个对象(文件夹/文件)的父级。 我从未体验过它,将'初步'DriveId立即传递给另一个GDAA方法。
在ResourceId的情况下它是不同的。 那个在GDAA中是次要的,只有当你走出设备时才使用它。 在提交(上载)对象之前,GDAA不知道。
我在这个演示中使用了类似的逻辑(创建文件夹/文件树)(参见MainActivity.createTree()方法)。 欢迎你深入挖掘它。
在SO 34318220中讨论了相关问题。
祝好运
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.