如果您基於存在狀態創建文件夾,'createTree()' method here就是這樣做的。
以下2個代碼片段根據傳遞的參數列出文件/文件夾(在文件夾內部,基於MIME類型進行全局...)。 md.getTitle()是您可以用來查詢文件/文件夾的行。
GoogleApiClient _gac;
void findAll(String title, String mime, DriveFolder fldr) {
ArrayList<Filter> fltrs = new ArrayList<Filter>();
fltrs.add(Filters.eq(SearchableField.TRASHED, false));
if (title != null) fltrs.add(Filters.eq(SearchableField.TITLE, title));
if (mime != null) fltrs.add(Filters.eq(SearchableField.MIME_TYPE, mime));
Query qry = new Query.Builder().addFilter(Filters.and(fltrs)).build();
MetadataBufferResult rslt = (fldr == null) ? Drive.DriveApi.query(_gac, qry).await() :
fldr.queryChildren(_gac, qry).await();
if (rslt.getStatus().isSuccess()) {
MetadataBuffer mdb = null;
try {
mdb = rslt.getMetadataBuffer();
if (mdb == null) return null;
for (Metadata md : mdb) {
if ((md == null) || md.isTrashed()) continue;
--->>>> md.getTitle()
}
} finally { if (mdb != null) mdb.close(); }
}
}
void listAll(DriveFolder fldr) {
MetadataBufferResult rslt = fldr.listChildren(_gac).await();
if (rslt.getStatus().isSuccess()) {
MetadataBuffer mdb = null;
try {
mdb = rslt.getMetadataBuffer();
if (mdb == null) return null;
for (Metadata md : mdb) {
if ((md == null) || md.isTrashed()) continue;
--->>>> md.getTitle()
}
} finally { if (mdb != null) mdb.close(); }
}
}
關鍵是可能檢查「isTrashed()」狀態。由於網絡上的「刪除」文件只會將其移至TRASH。此外,一般刪除(在網站上,since there is no 'DELETE' in the API)有點片狀。我正在測試它一段時間,在「isTrashed()」狀態更新之前可能需要幾個小時。並且手動清空Google雲端硬盤中的垃圾也不可靠。請參閱issue on Github。
有一點more talk here,但可能與您的問題無關。
感謝您確認這個問題也報告在這裏:http://stackoverflow.com/questions/22515028/deleted-files-status-unreliably-reported-in-the-new-google-drive-android-api-gd。只是爲了完整。順便說一句,確保你關閉了與metadataadata.close()的'元數據'緩衝區,如果我不知道資源泄漏。 – seanpj
呵呵,我找不到這樣的方法(metadata.close()) - 引用https://developer.android.com/reference/com/google/android/gms/drive/Metadata.html – Jakob
我也沒有。但是ADT是嘮叨我關於資源泄漏,所以我輸入「元數據」。 intellisense顯示.close()方法。所以我用它,它停止抱怨。但是,從緩衝區獲取的所有'元數據'必須在關閉之前複製/使用。在這裏grep任何與'getMetadataBuffer':https://github.com/seanpjanson/140319-Accounts/blob/master/GAC.java,你會看到。我記得在她的演示中向Burcu Dogan提起過這件事,但我沒有迴應。 – seanpj