존재 상태를 기반으로 폴더를 만드는 경우 '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()"상태를 확인하고 있습니다. 웹에서 '제거'파일은 휴지통으로 이동하기 만합니다. 또한 일반적으로 웹 사이트 (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. 완전을 위해서. 물론, meatadata.close()를 사용하여 'metadata'버퍼를 닫았는지 확인하지 않으면 리소스 누출이 발생합니다. – seanpj
허, 나는 그런 방법 (metadata.close())을 찾을 수 없다 - 참고 https://developer.android.com/reference/com/google/android/gms/drive/Metadata.html – Jakob
나도 마찬가지였다. 그러나 ADT는 리소스 누출에 대한 잔소리, 그래서 "메타 데이터"를 입력했습니다. intellisense는 .close() 메소드를 보여주었습니다. 그래서 나는 그것을 사용하고 불평을 멈추게했다. 그러나 버퍼에서 가져온 모든 '메타 데이터'는 닫히기 전에 복사/사용되어야합니다. 여기에 'getMetadataBuffer'가있는 Grep : https://github.com/seanpjanson/140319-Accounts/blob/master/GAC.java가 표시됩니다. Burcu Dogan을 그녀의 데모에서 파고 한 것을 기억합니다.하지만 아무런 반응이 없습니다. – seanpj