Android API Google Диска - список файлов из папки ВСЕГДА устарел / кэшируется, а не свежий

Я пытаюсь перечислить файлы с моего диска Google. Я использую официальный метод копирования и вставки из документов, но он не возвращает действительных результатов - он также перечисляет некоторые недавно удаленные (выброшенные в корзину) файлы и не перечисляет некоторые недавно созданные файлы. Похоже, что он закеширован, и требуется довольно много времени (минуты, иногда даже часы), чтобы отразить любые изменения. Кто-нибудь знает, как получить в реальном времени и действительный, а не устаревший и кешированный, список файлов с диска Google? Я использую этот метод:

    // I need to get list of NOT TRASHED files from root directory
    Query query = new Query.Builder().addFilter(Filters.eq(SearchableField.TRASHED, false).build();
    DriveFolder folder = Drive.DriveApi.getRootFolder(mGoogleApiClient);

    MetadataBufferResult filesMetadata = folder.queryChildren(mGoogleApiClient, query).await();

    if (!filesMetadata.getStatus().isSuccess()) {
      log("failed");
      return false;
    }

    Iterator<Metadata> it = filesMetadata.getMetadataBuffer().iterator();

    while (it.hasNext()) {
      Metadata meta = it.next();
        log("File name: " + meta.getTitle() + ", size: " + meta.getFileSize() + ", created: " + meta.getCreatedDate());
    }

    // but this list is outdated, doesn't reflect latest changes

person qkx    schedule 17.10.2014    source источник
comment
Вы когда-нибудь находили решение для этого?   -  person Alchete    schedule 09.01.2015
comment
Да - я использовал и старый API. Новый не в реальном времени - проверьте мой ответ в этой теме: stackoverflow.com/a/26524098/1360930   -  person qkx    schedule 27.01.2015


Ответы (1)


API-интерфейс Google диска не синхронизируется сразу после какого-либо действия, поэтому вам необходимо принудительно синхронизировать диск Google с помощью следующего вызова метода:

Drive.DriveApi.requestSync(_gac);
person Amol Suryawanshi    schedule 18.02.2015
comment
Было бы очень легко, если бы это работало. но это не так. - person seanpj; 18.02.2015
comment
Я думаю, что вы используете основной API Google Диска. вместо этого основной API использует вызовы REST API Google Диска. Core API требует некоторого времени для фиксации изменений на сервере Google Диска, поэтому вы можете получить нулевой идентификатор папки. - person Amol Suryawanshi; 01.06.2015