Този проблем ме тормози от създаването на новия Android API на Google Drive (GDAA). Първо обсъдено тук, надявах се да изчезне в следващите версии, но е все още там (от 2014/03/19). Изхвърлените от потребителя файлове/папки (отнасяйки се до действието „Премахване“ в „drive.google.com“) продължават да се появяват и в двете
Drive.DriveApi.query(_gac, query), and
DriveFolder.queryChildren(_gac, query)
както и
DriveFolder.listChildren(_gac)
методи, дори ако се използват с
Filters.eq(SearchableField.TRASHED, false)
квалификатор на заявка или ако използвам конструкция за филтриране на резултатите
for (Metadata md : result.getMetadataBuffer()) {
if ((md == null) || (!md.isDataValid()) || md.isTrashed()) continue;
dMDs.add(new DrvMD(md));
}
Използвайки
Drive.DriveApi.requestSync(_gac);
няма влияние. И времето, изминало от премахването, варира много, последният ми случай беше над 12 ЧАСА. И това е напълно случайно.
Което е по-лошо, дори не мога да разчитам на EMPTY TRASH в „drive.google.com“, то не дава никакви предвидими резултати. Понякога състоянието на файла се променя на „isTrashed()“, понякога изчезва от списъка с резултати.
Докато продължавах да се занимавам с този проблем, стигнах до следния супер ужасен хак:
find file with TRASH status equal FALSE
if (file found and is not trashed) {
try to write content
if ( write content fails)
create a new file
}
Дори това не помага. Файлът се показва като здрав, дори ако файлът е в кошчето (и състоянието му е двойно филтрирано чрез заявка и чрез тест за метаданни). Може дори да се запише щастливо и когато се провери в кошчето, се променя.
Заключението тук е, че корекцията трябва да получи по-висок приоритет, тъй като прави мултиплатформеното използване на Drive ненадеждно. Той ще бъде открит от разработчиците веднага в процеса на разработка / отстраняване на грешки, като ги отклони.