2014-02-15 37 views
2

我已更新到Google Play Services 4.2的新版本(库版本15)。突然,对DriveId.createFromResourceId(“....”)的调用未解决。“createFromResourceId()”去哪了?

DriveId sFolderId = DriveId.createFromResourceId("0B2EE......N3J6RU0"); 

我知道我可以使用驱动器Id,或encodeToString()/ decodeFromString()代替,但:

  1. RESOURCEID直接与谷歌驱动器的文件的HTTP对应。
  2. 看来是持久性,即使文件被操纵

两者documentationdemo code使用方法广泛。此外,镜像方法getResourceId()仍然存在。
不仅仅是一个问题,它是一个要求澄清从Google Drive/Google Play Svcs乡亲。

回答

8

我测试了Burcu的答案,不幸的是它没有工作。或者,也许我误解了这个问题。我会尽力重新评估它(并且我找到了正确的答案)。

DriveId有两种不同的字符串类型ID表示(包括文件和文件夹)。

1/ DriveId.encodeToString(), resulting in something like: 
"DriveId:CAESHDBCMW1RVVcyYUZKZmRhakIzMDBVbXMYjAUgssy8yYFRTTNKRU55" 
2/ and DriveId.getResourceId(), resulting in shorter: 
"UW2aFJfdajB3M3JENy00Ums0B1mQ" 

在4.1中,有2个方法是能将这些回驱动器Id

1/ DriveId.decodeFromString(DriveId.encodeToString()); 
2/ DriveId.createFromResourceId(DriveId.getResourceId()); 

他们两个成对工作正常,我选择了RESOURCEID品种,因为这短短的字符串出现在HTTP在其他系统中使用的地址(Apps脚本...)。例如: https://docs.google.com/file/d/UW2aFJfdajB3M3JENy00Ums0B1mQ
此外,即使在Google云端硬盘中处理文件(已删除,恢复,移动),该文件也会持续存在。

但在4.2中,createFromResourceId()消失,CAN NOT改为 “decodeFromString()” 是这样的:

//INCORRECT  
DriveId.decodeFromString(DriveId.getResourceId()); 

相反,从RESOURCEID的驱动器Id已被检索这样:

DriveIdResult result = Drive.DriveApi.fetchDriveId(GAC, DriveId.getResourceId()).await(); 
DriveId drvID = result.getDriveId(); 

(为简单起见,我使用“await”版本)。

所以得出的结论是: 的createFromResourceId()代替

Drive.DriveApi.fetchDriveId(GAC, DriveId.getResourceId()).await().getDriveId() 

需要提醒的是,“等待()”结构应在正常UI线程回调来实现。

更新(2014年10月23日)

上面的答案是相当陈旧,请参阅下面的注释。

+1

你是对的,fetchDriveId替换为createFromResourceId。对困惑感到抱歉。 resourceId与Drive API的Web版本中使用的ID相匹配,而DriveId(和其上的encodeToString方法)对一些附加信息进行编码。如果您想要使用Android API以外的Web API,请使用resourceId,否则使用DriveId和encodeTo/FromString。 –

+0

谢谢谢丽尔,你还可以请教关于DriveID(长的)的持久性吗?换句话说,我可以将它存储在我的应用程序的持久性存储中(例如SQLite),并在以后参考它?对我来说,“解码”比“fetchDriveId”方法更快。 – seanpj

+0

是的,这是encodeToString的意图。它应该在文档中说。 –

0

createFromResourceId更名为decodeFromString

DriveId sFolderId = DriveId.decodeFromString("0B2EE......N3J6RU0");