如果您基于存在状态创建文件夹,'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