截至 2015 年 8 月,“Android 版 Drive API”并未按照(松散)记录的方式运行,实际上已被破坏。主要痛点如下:
1) 共享相同 APP_ID 并使用相同 Google 用户登录的应用意味着能够查找并访问相同的文件 as Google indicate (例如,device1 上的 appX 创建一个名为“blahblah”的文件夹(其中用户驱动器中不存在“blahblah”文件夹),device2 上的 appX 应该能够找到该文件夹并从中上传/下载文件...但是事实并非如此(或者即使它确实有效,它也是间歇性的,并且大多数情况下根本不起作用))。即使在(多次)requestSync 调用以及允许云端硬盘自行同步超过 72 小时后,情况仍然如此。
2) 即使 requestSync 调用成功后,已删除的文件夹也不会被视为已删除。这样的垃圾文件夹仍然会有 isTrashed==false。
3) 永久删除的文件夹(即它从云端硬盘中消失,再也不会回来)。仍然可以找到并“成功”在其中创建文件夹和文件,但是写入此类文件的内容将始终在完成事件服务中产生失败。同样,这样的文件夹仍然会有 isTrashed==false (这很糟糕)。
错误报告已通过以下方式提交(感谢@DalmTo 提供的链接):https://code.google.com/a/google.com/p/apps-api-issues/issues/entry?labels=Type-Defect,API-Drive
https://code.google.com/a/google.com/p/apps-api-issues/issues/detail?id=4003 https://code.google.com/a/google.com/p/apps-api-issues/issues/detail?id=4004
那么,问题是:知道解决这些问题的方法吗?
更新:
我已将这些问题的范围缩小到我的个人 Google 帐户(或我的个人云端硬盘,其中包含很多很多文件)。这表明这些问题是 https://code.google.com/a/google.com/p/apps-api-issues/issues/detail?id=3905 的症状或与之密切相关。
最佳答案
我可以为您提供有关问题 1/的一些观点(在运行同一应用程序的多个设备上同步)。我已经在April 2014中指出了这一点。没有令人满意的答案(实际上是彻底的沉默)。所以我切换回REST API并自己处理所有事情(使用syncadapter,服务,...)。 REST的算法是:
- 创建/更新/删除/....(execute() 方法)
- 使用 GCM 将资源 ID(“id”+消息)分发到其他设备
- 让其他设备通过 REST API 处理更改(同样是在服务中)
我重新访问了 GDAA此后几次都没有得到满意的结果(requestSync)。最后,当我开始使用'completion events时,我高兴了一半。 ’(一年后,不用说)。
算法再次是:
- 创建....
- 完成后获取 ResourceId
- 使用 GCM 将“ResourceId”+消息发送到其他设备
- 让其他设备通过 GDAA(使用 ResourceId)处理更改
...重点是:
在我尝试让它发挥作用的过程中,我终于意识到 GDAA 并不适合所有应用程序(就像我们在这里讨论的那样)。 GDAA 经历各种循环,使在线/离线状态透明,同时缓存数据并优化网络流量、电池使用……它会产生延迟、不可预测的状态……
...所以,最终我不再责怪 GDAA 不是一把瑞士刀,而是做了每个人都梦想过的事情。开发人员需要充分了解他/她正在使用的工具箱的优点/缺点,并预先决定使用哪个工具。我知道,文档并没有详细说明这一点,相信我,我自己也陷入了马格努斯的兴奋之中。我还记得pinoyyid's 2014 年 1 月的警告,告诉我不要太早介入。
祝你好运
关于android - 适用于 Android 的 Drive API 已损坏,对吧?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32303732/