使用自定義屬性創建文件和查詢文件可以正常工作,但無法檢索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()」,因爲它是查詢條件之一,對吧?
任何建議表示讚賞。
剛剛發現它需要等待一會兒才能在onCompletion回調之後正確地獲取自定義屬性。 – Caxton
面對同樣的問題和自定義鍵扮演着重要的角色,因爲我使用它來避免上傳已上傳的文件,通過檢查設置爲自定義屬性的ID,同時首次上傳。任何幫助? – Ravi