我尝试创建一个Android应用程序,其中使用谷歌驱动器来存储文件。现在想要检测任何设备对同一文件的更改。检测文件中的更改尝试使用以下代码获取文件的修改时间(使用新的google驱动器api for 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());
}
}
答案 0 :(得分: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();
我希望这有助于其他人。
答案 1 :(得分:0)
请勿使用修改日期来检测更改。您应该查找对etag的更改。
答案 2 :(得分:0)
您是否使用了onMetadataRetrieved(MetadataResult result)
API?你的代码似乎不是这样。您需要在getMetaData()
函数内调用onMetadaRetrieved
方法。