Почему мой запрос по названию не находит созданные вручную файлы / папки
Я выполняю запрос в Android SDK для Google Диска, чтобы проверить, существует ли каталог с определенным именем, или создаю его иначе (имя каталога - это заголовок ресурса на Google Диске).
Проблема, с которой я сталкиваюсь в следующем коде, состоит в том, что он никогда не находит мою папку и каждый раз создает новую, и я не знаю почему. Он успешно находит каталог, если SDK создал его сам.
public static final String FOLDER_NAME_CORE = "My Core Folder";
MetadataBuffer meta = Drive.DriveApi.query(mGoogleApiClient, new Query.Builder()
.addFilter(Filters.eq(SearchableField.TRASHED, false))
.addFilter(Filters.eq(SearchableField.TITLE, FOLDER_NAME_CORE ))
.setSortOrder(new SortOrder.Builder().addSortDescending(SortableField.MODIFIED_DATE).build())
.build()).await().getMetadataBuffer();
if (metadataBufferResult.getCount() > 0) {
Log.d(TAG, "Creating new folder");
...
} else {
Log.d(TAG, "Using existing folder");
}
Я попытался сделать папку общедоступной, но она ничего не изменила (как и ожидалось). Кто-нибудь знает, что я должен изменить, чтобы вместо этого найти существующую папку? Насколько я знаю, этот список является единственно возможным вариантом поиска.
1 ответ
Я надеюсь, что вы знаете о поддерживаемых областях.
Я думаю, что есть две вещи, которые вызывают вашу проблему, и вам придется пересмотреть логику вашего приложения.
Во-первых, GDAA (в отличие от REST Api) вводит некоторую задержку, поэтому файл / папка может не существовать на диске некоторое время, даже если вы получили свой идентификатор DriveId (см. Это).
Во-вторых, тот факт, что вы используете TITLE в качестве индикатора существования, не работает во вселенной GooDrive, поскольку TITLE не уникален (вы уже это знаете).
Я бы порекомендовал этот подход:
- когда ваше приложение (на основе GDAA) создает файл / папку, подождите, пока вы не получите его ResourceId. Это подтверждает его существование (снова здесь).
- всегда проверяйте наличие файла / папки на диске, используя его ResourceId (превращенный в DriveId)
Удачи