Дата изменения диска Google дает неправильное время

Я пытаюсь создать приложение для Android, в котором для хранения файла используется диск Google. теперь хотите обнаружить изменение в том же файле на любом устройстве. Для обнаружения изменения в файле попробуйте получить время изменения файла, используя приведенный ниже код (используя новый API-интерфейс Google Drive для Android) https://developers.google.com/drive/android/get-started

DriveFile file = Drive.DriveApi.getFile(mGoogleApiClient, fileId);
Metadata fmd = file.getMetadata(mGoogleApiClient).await().getMetadata();
Log.e("modified date",""+fmd.getModifiedDate()); 

но его указанное измененное время всегда неверно.. оно не возвращает измененное время, когда другое устройство (использующее то же приложение) изменяет тот же файл. есть ли другой способ обнаружить изменение в файле??? спасибо

я также использую код ниже, но не повезло

DriveFile file = Drive.DriveApi.getFile(mGoogleApiClient, fileId);
file.getMetadata(mGoogleApiClient).addResultCallback(new DemoClassForHandleCallBack());

public class DemoClassForHandleCallBack implements OnMetadataRetrievedCallback{

    @Override
    public void onMetadataRetrieved(MetadataResult result) {
        boolean isSuccess = result.getStatus().isSuccess();
            Log.i("is success",""+isSuccess);
        Metadata fmd = result.getMetadata();
        Log.e("modified date",""+fmd.getModifiedDate());
        }
    }

person Nikhil    schedule 15.02.2014    source источник
comment
Вы проверили, успешно ли извлекаются метаданные (при использовании ResultCallback)?   -  person AndyFaizan    schedule 15.02.2014
comment
да, я проверил это, и он всегда возвращает успех (статус {statusCode = УСПЕХ, разрешение = ноль}), спасибо за помощь   -  person Nikhil    schedule 17.02.2014
comment
Вы вызываете getFile из метода onConnected?   -  person AndyFaizan    schedule 17.02.2014
comment
нет, я делаю это после получения callBack от ConnectionCallbacks, но не в методе onConnected(), я думаю, что это не проблема с onConnected bcus, если я хочу загрузить файл, он работает нормально, просто попробуйте с getModifiedDate()   -  person Nikhil    schedule 17.02.2014
comment
Просто попробуйте в методе onConnected()   -  person AndyFaizan    schedule 17.02.2014
comment
но я хочу использовать метод getModifiedDate() более одного раза, в то время как onConnected() вызывается только один раз, когда создается первое соединение   -  person Nikhil    schedule 17.02.2014
comment
я также пробую это onConnected(), но это не дает последнее время модификации...   -  person Nikhil    schedule 17.02.2014
comment
Просто морщинка... с новым API вам не обязательно читать/писать на серверы. Включил режим полета на моем телефоне, мое приложение все еще записывает и читает эти файлы. Данные кэшируются в ожидании последующей загрузки. Бьюсь об заклад, это, вероятно, повлияет на даты модификации.   -  person NameSpace    schedule 09.03.2014
comment
Возможно, стоит упомянуть, что на данный момент Google Диск, похоже, имеет ошибку в сообщении о дате последнего изменения даже при просмотре из Chrome на настольном компьютере...   -  person BlackVegetable    schedule 26.10.2014
comment
У меня почти такая же проблема. @nikhil, ты когда-нибудь находил решение?   -  person Alchete    schedule 10.01.2015


Ответы (3)


Я не знаю, ищете ли вы еще ответ, но я только что сам решил эту проблему.

Оказывается, метаданные устарели/кэшируются, ЕСЛИ вы сначала не ОТКРЫЛИ рассматриваемый файл.

Таким образом, рабочий код выглядит следующим образом:

DriveFile file;

// Trick Google Drive into fetching the remote file
// which has the latest metadata
file.open( getGoogleApiClient(), DriveFile.MODE_READ_ONLY, null).await();

DriveResource.MetadataResult result = file.getMetadata(getGoogleApiClient()).await();
Metadata metadata = result.getMetadata();

// Get the modified date
metadata.getModifiedDate();

Я надеюсь, что это поможет кому-то другому.

person Alchete    schedule 10.01.2015
comment
Я также наблюдаю подобное поведение. Я не читал файл, если только не изменилась дата изменения, что привело к выборке нового файла только в том случае, если я перезапустил весь процесс. После удаления чека (и получения каждый раз) все заработало как положено. - person Kevin Grant; 27.01.2015

Не используйте измененную дату для обнаружения изменений. Вы должны искать изменения в etag.

person pinoyyid    schedule 16.02.2014
comment
но нет ничего похожего на etag в новом API Android для Google Диска. - person Nikhil; 17.02.2014
comment
Мои извенения. Поскольку теги вопросов включают google-drive-sdk, я не понял, что вы имеете в виду новый API Android. В новом API отсутствуют многие полные метаданные Диска. Вам просто нужно подождать, пока API созреет, или вернуться к использованию обычного Диска. - person pinoyyid; 17.02.2014

Вы использовали onMetadataRetrieved(MetadataResult result) API? Из вашего кода не видно. Вам нужно вызвать метод getMetaData() из функции onMetadaRetrieved.

person AndyFaizan    schedule 17.02.2014
comment
Не могли бы вы вставить этот код в ответ? Здесь тяжело читать. - person AndyFaizan; 17.02.2014