2015-10-02 35 views
0

我在Android SDK上運行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是唯一可能的搜索選項。

回答

0

我希望你知道支持scopes
我認爲有2件事會導致你的問題,你將不得不重新考慮你的應用程序的邏輯。

首先,GDAA(不像REST API),引入了一些延遲,所以文件/文件夾可能無法在驅動器上一段時間存在,即使你有你的驅動器Id(見this)。其次,由於TITLE不是唯一的(你已經知道了),所以使用TITLE作爲存在指示符的事實不適用於GooDrive Universe。

我會推薦這種方法:

  1. 當你(GDAA爲主)的應用程序創建一個文件/文件夾,等到你得到它的RESOURCEID。這證實了它的存在(再次here)。
  2. 使用它的RESOURCEID(變成驅動器Id)

好運

+0

值得慶幸的是我使用RESOURCEID在大部分應用程序,因爲它是更經常檢查驅動器中的文件/文件夾是否存在統一於DriveId(ResourceId匹配共享鏈接)。這實際上只是爲了獲得ResourceId而按標題查看的新安裝。我沒有意識到查詢結果是SDK強制執行的我以爲我犯了一個錯誤。感謝您清理它! –

+0

只是'擡頭',DriveId在GooPlaySvcs實例(一個設備)外面沒用。它甚至在它的一生中變化([丹尼爾的評論](http://stackoverflow.com/questions/21800257/where-did-the-createfromresourceid-go))。不要緩存它,不要發佈它。 – seanpj

相關問題