2016-01-21 82 views
1

如何在java中使用Google Drive v3設置文件的應用程序屬性?如何在Google Drive api v3中使用appProperties?

該引用說:「files.update與{'appProperties':{'key':'value'}}」,但我不明白如何將它應用到我的java代碼。

我試過的東西

file = service.files().create(body).setFields("id").execute(); 
Map<String, String> properties = new HashMap<>(); 
properties.put(DEVICE_ID_KEY, deviceId); 
file.setAppProperties(properties); 
service.files().update(file.getId(), file).setFields("appProperties").execute(); 

但後來我得到一個錯誤「資源本體包括不直接寫場。」

並獲取數據:

File fileProperty = service.files().get(sFileId).setFields("appProperties").execute(); 

那麼如何設置和獲取該文件的屬性? 謝謝! :)

編輯 我試圖

file = service.files().create(body).setFields("id").execute(); 
Map<String, String> properties = new HashMap<>(); 
properties.put(DEVICE_ID_KEY, deviceId); 
file.setAppProperties(properties); 
service.files().update(file.getId(), file).execute(); 

,但我仍然得到同樣的錯誤消息。

回答

0

Drive API client for Java v3表示File.setAppProperties將需要Hashmap<String,String>參數。嘗試刪除setFields("appProperties")調用,因爲您嘗試覆蓋appProperties本身(此時您仍在調用更新)。

檢索appProperties時,您只需撥打getAppProperties即可。

希望這有助於!

+0

我試過 file = service.files()。create(body).setFields(「id」)。execute(); Map properties = new HashMap <>(); properties.put(DEVICE_ID_KEY,deviceId); file.setAppProperties(properties); File fileProperty = service.files()。update(file.getId(),file).execute(); 但我仍然得到相同的錯誤。 – Mackan

2

要避免此錯誤提供了有關v3

"The resource body includes fields which are not directly writable." 

調用update時候,你需要創建一個空的File與新變化,傳遞到update功能。

我寫了這個和其他筆記作爲v3 Migration Guide here

相關問題