2014-02-15 51 views
4

我嘗試創建一個Android應用程序,其中使用谷歌驅動器來存儲文件。現在想通過任何檢測的變化在同一文件device.for檢測在一個文件中嘗試改變得到修改使用下面的代碼文件的時間(使用Android的新谷歌驅動API)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

您是否檢查元數據是否成功獲取(使用ResultCallback時)? – AndyFaizan

+0

是的,我檢查它,它總是返回成功(狀態{statusCode = SUCCESS,分辨率=空})thnx幫助 – nikhil

+0

你是否從onConnected方法調用getFile? – AndyFaizan

回答

0

不要使用修改日期來檢測變化。你應該尋找對etag的改變。

+0

但是在新的谷歌驅動器android api – nikhil

+1

沒有像etag我的道歉。因爲問題標籤包含google-drive-sdk,我沒有意識到你指的是新的android API。新的API缺少大量完整的雲端硬盤元數據。您只需等待API成熟即可,或者返回使用傳統的雲端硬盤。 – pinoyyid

+0

其確定和thnx求救... – nikhil

0

您是否使用onMetadataRetrieved(MetadataResult result) API?看起來不像你的代碼。您需要從onMetadaRetrieved函數中調用getMetaData()方法。

+0

是的,我也嘗試這個,但沒有運氣.... – nikhil

+0

你能否將此代碼粘貼在答案?它很難在這裏閱讀。 – AndyFaizan

+0

現在你可以檢查有問題的代碼... – nikhil

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

我希望這可以幫助別人。

+0

我也在觀察類似的行爲。除非修改日期發生變化,否則我沒有在文件中讀取數據,導致只有在重新啓動整個過程時才提取新文件。刪除檢查(並每次提取)後,一切按預期工作。 –

相關問題