为什么我的标题查询找不到手动创建的 files/folders

Why does my query by title not find manually created files/folders

我运行在 Android SDK 上查询 Google 驱动器以检查是否存在具有特定名称的目录或以其他方式创建它(目录名称是资源Google 驱动器上的标题)。

我在使用以下代码时遇到的问题是它从来没有找到我的文件夹并且每次都创建一个新文件夹,我不确定为什么。如果是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");
}

我已经尝试公开共享该文件夹,但它并没有改变任何东西(如预期的那样)。有谁知道我必须更改什么才能找到现有文件夹?据我所知,this list 是唯一可能的搜索选项。

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

首先,GDAA (unlike the REST Api), introduces some latency, so the file/folder may not exist on the Drive for awhile, even if you got your DriveId (see this).

其次,您使用 TITLE 作为存在指示符这一事实在 GooDrive 宇宙中不起作用,因为 TITLE 不是唯一的(您已经知道这一点)。

我会推荐这种方法:

  1. 当您的(基于 GDAA 的)应用创建 file/folder 时,请等待直到您获得它的 ResourceId。这证实了它的存在(再次 here)。
  2. 始终使用 ResourceId(转换为 DriveId)
  3. 检查驱动器中是否存在 file/folder