对于我当前的项目,我想允许用户创建一个 sqlite 数据库文件并让他们输入一些内容。然后用户可以选择登录他们的谷歌驱动器帐户并上传此文件。之后,在用户进行进一步编辑后,上传新的数据库文件以替换旧文件。最后,如果用户有多个设备,则应从 google drive 下载数据库并替换设备上存储的现有文件。
目前,我已经成功设置了Google Drive SDK身份验证,我可以使用我的帐户登录该应用程序。
我的主要问题是,当我选择按同步按钮时,如何将 sqlite 数据库文件上传到 APP 文件夹? (该方法应该在用户需要同步时调用)
另外,如何将sqlite数据库文件上传到APP文件夹?
最佳答案
您的问题有点宽泛,但我会尽力为您指明正确的方向。
首先你必须决定是否使用 REST API 或 GDAA .两者都将完成相同的事情(实际上 GDAA 的功能现在有点窄,但对于您的情况而言就可以了)。 最大的区别在于 GDAA 将为您处理在线/离线状态,而使用 REST Api,您必须实现某种非 UI 线程(同步服务)同步。此外,在使用 GDAA 时还必须注意延迟问题。
接下来,上传SQLite数据库的过程和其他任何二进制数据流一样。
获取“xxx.db”文件,制作输出流(或 byte[] 缓冲区)并创建一个带有标题 + mimetype 元数据的 GooDrive 文件,将流推送到它的内容中并以愉快的方式发送它。标准文件夹和应用文件夹之间的唯一区别是文件的父级。
您将获得一个 ID,您随后可以使用该 ID 将文件下载到设备。或者您可以使用按元数据搜索(在您的情况下为标题)来获取此 ID。它再次作为输入流出现,您将其转储到设备上的“xxx.db”文件中。
问题的第二部分涉及多个设备。所有 api 都不会通知您有关 GooDrive 的更改,因此您必须实现以下两种策略之一:
1/轮询(哎哟),最好是与系统提供的同步间隔同步的服务。
2/GCM 消息广播给感兴趣的设备/用户(不琐碎,但高效......而且性感)。
将多个设备与 GDAA 结合使用时必须注意的另一个陷阱在 SO 29030110 中有所描述。和 SO 22874657 .
如果您决定使用这 2 个 API,我会为 REST 维护基本的 CRUD 实现演示。和 GDAA . GDAADemo 还可以选择使用 app 文件夹。
祝你好运
关于java - 安卓谷歌驱动器 SDK : Saving to App Folder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33286915/