2015-06-02 104 views
0

使用自定義屬性創建文件和查詢文件可以正常工作,但無法檢索queryChildren()ResultCallback中的自定義屬性。無法通過Android Drive API獲取自定義屬性

這裏是CustomProperty的定義:

/** 
* CustomPropertyKey: Uploaded file's hash code 
*/ 
public static final CustomPropertyKey CustomPropertyKeyFileHash = 
     new CustomPropertyKey("fileHash", CustomPropertyKey.PUBLIC); 

查詢條件:

  Query query = new Query.Builder() 
       .addFilter(
         Filters.and(
           Filters.eq(SearchableField.MIME_TYPE, sMimeType), 
           Filters.eq(BaseDemoActivity.CustomPropertyKeyFileHash, mDriveFile.getMD5()), 
           Filters.eq(SearchableField.TRASHED, false) 
         ) 
       ).build(); 

      mDriveFile.getDriveFolder().queryChildren(mGoogleApiClient, query) 
       .setResultCallback(mResultCallback); 

查詢結果的回調:

  public void onResult(DriveApi.MetadataBufferResult result) { 
       if (!result.getStatus().isSuccess()) { 
        showMessage("Problem while retrieving results"); 
        return; 
       } 

       MetadataBuffer mdb = result.getMetadataBuffer(); 
       if (mdb.getCount() > 0) { 
        try { 
         if (mdb != null) { 
          for (Metadata md : mdb) { 
           if (md == null) continue; 

           Log.d(TAG, "[FileMetadataCallback][onResult] md.getTitle(): " + md.getTitle() + ", md.getDriveId(): " + md.getDriveId()); 
           Log.d(TAG, "[FileMetadataCallback][onResult] md.getTitle(): " + md.getTitle() + ", md.getResourceId(): " + md.getDriveId().getResourceId()); 

           Map<CustomPropertyKey, String> map = md.getCustomProperties(); 
           if (map != null) { 
            Log.d(TAG, "[FileMetadataCallback][onResult] file custom properties size: " + map.size()); 
            if (map.size() > 0) { 
             Log.d(TAG, "[FileMetadataCallback][onResult] file hash: " + map.get(CustomPropertyKeyFileHash)); 
            } 
           } 
          } 
         } 
        } finally { 
         if (mdb != null) mdb.close(); 
        } 
       } 
      } 

我總是日誌「[FileMetadataCallback] [onResult]文件自定義屬性大小:0「。 但是,我應該能夠檢索「mDriveFile.getMD5()」,因爲它是查詢條件之一,對吧?

任何建議表示讚賞。

+0

剛剛發現它需要等待一會兒才能在onCompletion回調之後正確地獲取自定義屬性。 – Caxton

+0

面對同樣的問題和自定義鍵扮演着重要的角色,因爲我使用它來避免上傳已上傳的文件,通過檢查設置爲自定義屬性的ID,同時首次上傳。任何幫助? – Ravi

回答

1

剛發現它需要稍等片刻(幾分鐘)才能在onCompletion回調之後正確地獲得自定義屬性。 因此,如果您不需要在onCompletion回調之後立即獲取定製屬性,那麼這應該不是問題。

0

這不是預期的。如果自定義屬性在本地添加到文件上(即在您查詢的相同設備上),則應該可以在不等待完成事件的情況下檢索屬性。當設備脫機時,您可以嘗試這樣做嗎?

相關問題