我已更新到新版Google Play Services 4.2(库版本15)。突然之间,对DriveId.createFromResourceId(“....”)的调用尚未解决。
DriveId sFolderId = DriveId.createFromResourceId("0B2EE......N3J6RU0");
我知道我可以使用 DriveId 或 encodeToString()/ decodeFromString()代替,但是:
documentation和demo code都广泛使用该方法。此外,镜像方法 getResourceId()仍然存在。
不仅仅是一个问题,还要求 Google云端硬盘 / 澄清一下Google Play Svcs 人。
答案 0 :(得分:8)
我测试了Burcu的答案,不幸的是它没有用。或者也许我错误地表达了这个问题。我会尝试重新说出来(我找到了正确答案)。
DriveId有两种不同的字符串类型ID表示形式(文件和文件夹)。
1/ DriveId.encodeToString(), resulting in something like:
"DriveId:CAESHDBCMW1RVVcyYUZKZmRhakIzMDBVbXMYjAUgssy8yYFRTTNKRU55"
2/ and DriveId.getResourceId(), resulting in shorter:
"UW2aFJfdajB3M3JENy00Ums0B1mQ"
在4.1中,有两种方法可以将这些方法转回DriveId
1/ DriveId.decodeFromString(DriveId.encodeToString());
2/ DriveId.createFromResourceId(DriveId.getResourceId());
它们都成对正常工作,我选择了ResourceId变种,因为这个短字符串出现在其他系统中使用的http地址中(Apps Script ...)。例如:
https://docs.google.com/file/d/UW2aFJfdajB3M3JENy00Ums0B1mQ
此外,即使文件在Google云端硬盘中被操作(删除,恢复,移动),它似乎也是持久的。
但是在4.2中, createFromResourceId()消失, CAN NOT 被“decodeFromString()”替换为:
//INCORRECT
DriveId.decodeFromString(DriveId.getResourceId());
相反,必须以这种方式检索ResourceId中的DriveId:
DriveIdResult result = Drive.DriveApi.fetchDriveId(GAC, DriveId.getResourceId()).await();
DriveId drvID = result.getDriveId();
(为简单起见,我使用“await”版本)。
所以结论是: createFromResourceId()被
取代Drive.DriveApi.fetchDriveId(GAC, DriveId.getResourceId()).await().getDriveId()
需要注意的是“await()”构造应该作为普通UI线程中的回调实现。
更新时间(2014-10-23)
上面的答案非常陈旧,请参阅下面的评论。
答案 1 :(得分:0)
createFromResourceId
已重命名为decodeFromString
。
DriveId sFolderId = DriveId.decodeFromString("0B2EE......N3J6RU0");