【发布时间】:2015-09-11 19:29:27
【问题描述】:
运行下面的代码,我在平板电脑上使用 Google Drive Android API 创建了一个文件夹。几秒钟后,从 PC 上的远程位置删除该文件夹。当我重新运行代码时,API 仍然认为“MyFolder”存在,即使它已被删除并且在平板电脑上的 Google Drive 应用程序中不可见。文件夹持久性最终在一段时间后消失,代码按预期工作。这是云驱动器的预期行为吗?
Query query = new Query.Builder()
.addFilter(Filters.and(Filters.eq(
SearchableField.TITLE, "MyFolder"),
Filters.eq(SearchableField.TRASHED, false)))
.build();
Drive.DriveApi.query(getGoogleApiClient(), query)
.setResultCallback(new ResultCallback<DriveApi.MetadataBufferResult>() {
@Override
public void onResult(DriveApi.MetadataBufferResult result) {
if (!result.getStatus().isSuccess()) {
showMessage("Cannot create folder in the root.");
} else {
boolean isFound = false;
for(Metadata m : result.getMetadataBuffer()) {
if(!isFound) {
if (m.getTitle().equals("MyFolder")) {
showMessage("Folder exists");
isFound = true;
}
}
}
if(!isFound) {
showMessage("Folder not found; creating it.");
MetadataChangeSet changeSet = new MetadataChangeSet.Builder()
.setTitle("MyFolder")
.build();
Drive.DriveApi.getRootFolder(getGoogleApiClient())
.createFolder(getGoogleApiClient(), changeSet)
.setResultCallback(new ResultCallback<DriveFolder.DriveFolderResult>() {
@Override
public void onResult(DriveFolder.DriveFolderResult result) {
if (!result.getStatus().isSuccess()) {
showMessage("Error while trying to create the folder");
} else {
mThwingAlbertFolderId = result.getDriveFolder().getDriveId();
showMessage("Created a folder: " + mThwingAlbertFolderId);
}
}
});
}
}
}
});
【问题讨论】:
-
仅供参考,它与您的问题没有直接关系,但是您应该更改“isFound”逻辑,而不是在
for(Metadata m...)中使用if,一旦找到您的文件夹,您应该使用break命令以获得更好的性能。 -
是的。我打算添加逻辑来处理重复文件夹名称的多个实例,但由于这个问题而从未完成。谢谢。
标签: android google-drive-android-api