为什么我的查询标题找不到手动创建的文件/文件夹



我正在Android SDK上运行查询,以检查是否存在具有特定名称的目录或创建它(目录名称是Google Drive上的资源标题)。

我有以下代码的问题是,它从来没有找到我的文件夹,每次创建一个新的,我不知道为什么。如果这个目录是SDK自己创建的,它会成功找到它。

public static final String FOLDER_NAME_CORE = "My Core Folder";
MetadataBuffer meta = Drive.DriveApi.query(mGoogleApiClient, new Query.Builder()
            .addFilter(Filters.eq(SearchableField.TRASHED, false))
            .addFilter(Filters.eq(SearchableField.TITLE, FOLDER_NAME_CORE ))
            .setSortOrder(new SortOrder.Builder().addSortDescending(SortableField.MODIFIED_DATE).build())
.build()).await().getMetadataBuffer();
if (metadataBufferResult.getCount() > 0) {
    Log.d(TAG, "Creating new folder"); 
    ...
} else {
    Log.d(TAG, "Using existing folder");
}

我试过让文件夹公开共享,但它没有改变任何东西(如预期的那样)。有人知道我要做什么改变才能找到现有的文件夹吗?据我所知,这个列表是唯一可能的搜索选项。

希望您了解支持的作用域。
我认为有两件事会导致你的问题,你将不得不重新思考你的应用程序的逻辑。

首先,GDAA(与REST Api不同)引入了一些延迟,因此文件/文件夹可能暂时不存在于驱动器上,即使您获得了您的DriveId(参见此)。

第二,使用TITLE作为存在指示符在GooDrive中并不适用,因为TITLE不是唯一的(您已经知道这一点)。

我建议这样做:

  1. 当你的(基于GDAA的)应用程序创建一个文件/文件夹,等待,直到你得到它的ResourceId。这证实了它的存在。
  2. 总是使用它的ResourceId(变成DriveId)检查驱动器中是否存在文件/文件夹