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

时间:2015-10-02 10:40:12

标签: android google-drive-api google-drive-android-api

我正在Android SDK for Google Drive上运行查询,以检查是否存在具有特定名称的目录,或者创建它(目录名是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是唯一可能的搜索选项。

1 个答案:

答案 0 :(得分:0)

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

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

其次,使用TITLE作为存在指标的事实在GooDrive世界中不起作用,因为TITLE不是唯一的(你已经知道)。

我会推荐这种方法:

  1. 当您的(基于GDAA的)应用创建文件/文件夹时,请等到获得它的ResourceId。这证实了它的存在(再次this)。
  2. 始终使用它的ResourceId(转为DriveId)检查驱动器中是否存在文件/文件夹
  3. 祝你好运