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)
我知道我可以使用DriveId或encodeToString()/ decodeFromString()代替,但是:
无论是文档和演示代码使用方法广泛.此外,镜像方法getResourceId()仍然存在.
这不仅仅是一个问题,而是要求Google云端硬盘/Google Play Svcs人员澄清.
我测试了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)
上面的答案很陈旧,请参考下面的评论.