Эта проблема беспокоила меня с момента появления нового Google Drive Android Api (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 ЧАСОВ. И это совершенно случайно.
Что еще хуже, я даже не могу полагаться на ПУСТОЙ КОРЗИНУ в '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
}
Даже это не помогает. Файл отображается как исправный, даже если файл находится в корзине (и его статус был дважды отфильтрован по запросу и по тесту метаданных). В него можно даже радостно записать и при осмотре в хлам модифицировать.
Вывод здесь состоит в том, что исправление должно иметь более высокий приоритет, поскольку оно делает многоплатформенное использование Диска ненадежным. Это будет обнаружено разработчиками сразу в процессе разработки/отладки, отпугивая их.