Android Google Drive SDK:保存到应用程序文件夹

Android Google Drive SDK: Saving to App Folder

对于我当前的项目,我想允许用户创建一个 sqlite 数据库文件并让他们输入一些内容。然后用户可以选择登录他们的 google 驱动器帐户并上传此文件。之后,在用户进行进一步编辑后,上传新的数据库文件以替换旧文件。最后,如果用户有多个设备,数据库应该从google驱动器下载并替换存储在设备上的现有文件。

目前,我已成功设置Google Drive SDK 身份验证,我可以使用我的帐户登录该应用程序。

我的主要问题是,当我选择按同步按钮时,如何将sqlite 数据库文件上传到APP 文件夹? (该方法应该在用户需要同步时调用)

另外,如何将sqlite数据库文件上传到APP文件夹?

您的问题有点宽泛,但我会尽力为您指明正确的方向。

首先你必须决定是否使用REST Api or GDAA。两者都将完成相同的事情(实际上 GDAA 的功能现在有点窄,但对于您的情况而言就可以了)。 最大的区别在于 GDAA 将为您处理 on-line / off-line 状态,而对于 REST Api,您必须实现某种 non-UI 线程(同步服务)同步。此外,在使用 GDAA 时还必须注意延迟问题。

接下来,上传SQLite数据库的过程和其他任何二进制数据流一样。

  • 抓取 'xxx.db' 文件,制作输出流(或 byte[] 缓冲区)并创建一个带有标题 + mimetype 元数据的 GooDrive 文件,将流推入其内容并发送这是快乐的方式。标准文件夹和应用程序文件夹之间的唯一区别是文件的parent。

  • 您将获得一个 ID,您随后可以使用该 ID 将文件下载到设备。或者您可以使用按元数据搜索(在您的情况下为标题)来获取此 ID。它再次作为输入流出现,您将其转储到设备上的 'xxx.db' 文件中。

你问题的第二部分涉及多个设备。 None 的 API 会通知您有关 GooDrive 的更改,因此您必须实施以下两种策略之一:

1/ 轮询(哎哟),最好是与系统提供的同步间隔同步服务。

2/ GCM 消息广播给感兴趣的设备/用户(不琐碎,但高效......而且性感)。

SO 29030110 and SO 22874657.

中描述了将多个设备与 GDAA 结合使用时必须注意的另一个陷阱。

如果您决定使用 2 个 API,我会为 REST and GDAA 维护基本的 CRUD 实现演示。 GDAADemo 还可以选择使用 app 文件夹。

祝你好运