"createFromResourceId()"去了哪里?

sea*_*npj 2 android google-drive-api google-play-services

我已更新到新版Google Play Services 4.2(库版本15).突然之间,对DriveId.createFromResourceId("....")的调用尚未解决.

DriveId sFolderId = DriveId.createFromResourceId("0B2EE......N3J6RU0"); 
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用DriveIdencodeToString()/ decodeFromString()代替,但是:

  1. ResourceId直接对应于Google云端硬盘中的文件的http.
  2. 即使文件被操作,似乎也是持久的

无论是文档演示代码使用方法广泛.此外,镜像方法getResourceId()仍然存在.
这不仅仅是一个问题,而是要求Google云端硬盘/Google Play Svcs人员澄清.

sea*_*npj 8

我测试了Burcu的答案,不幸的是它没有用.或者也许我错误地表达了这个问题.我会尝试重新表达它(我找到了正确的答案).

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

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

在4.1中,有两种方法可以将这些方法转回DriveId

1/ DriveId.decodeFromString(DriveId.encodeToString());
2/ DriveId.createFromResourceId(DriveId.getResourceId());
Run Code Online (Sandbox Code Playgroud)

它们都成对地正确工作,我选择了ResourceId变种,因为这个短字符串出现在其他系统中使用的http地址中(Apps Script ...).例如:https: //docs.google.com/file/d/UW2aFJfdajB3M3JENy00Ums0B1mQ
此外,即使文件在Google云端硬盘中被操作(已删除,已恢复,已移动),它似乎也是持久的.

但是在4.2中,createFromResourceId()消失了,不能被"decodeFromString()"替换为:

//INCORRECT    
DriveId.decodeFromString(DriveId.getResourceId());
Run Code Online (Sandbox Code Playgroud)

相反,必须以这种方式检索ResourceId中的DriveId:

DriveIdResult result = Drive.DriveApi.fetchDriveId(GAC, DriveId.getResourceId()).await();
DriveId drvID = result.getDriveId();
Run Code Online (Sandbox Code Playgroud)

(为简单起见,我使用"await"版本).

所以结论是:createFromResourceId()被替换为

Drive.DriveApi.fetchDriveId(GAC, DriveId.getResourceId()).await().getDriveId()
Run Code Online (Sandbox Code Playgroud)

需要注意的是,"await()"构造应该在普通UI线程中实现为回调.

更新(2014-10-23)

上面的答案很陈旧,请参考下面的评论.