4

我正在尝试创建一个使用谷歌驱动器存储文件的 android 应用程序。现在想通过任何设备检测同一文件中的更改。为了检测文件中的更改尝试使用以下代码获取文件的修改时间(使用新的 google drive api for android)https://developers.google.com/drive /android/开始

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());
        }
    }
4

3 回答 3

2

我不知道你是否还在寻找答案,但我自己解决了这个问题。

事实证明,元数据已过时/缓存,除非您首先打开相关文件。

因此,工作代码如下:

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();

我希望这对其他人有帮助。

于 2015-01-10T16:17:32.560 回答
0

你用过onMetadataRetrieved(MetadataResult result)API 吗?从您的代码看来并非如此。您需要getMetaData()从函数内部调用该方法onMetadaRetrieved

于 2014-02-17T06:48:47.920 回答
0

不要使用修改日期来检测更改。您应该寻找对 etag 的更改。

于 2014-02-16T03:47:53.030 回答