【问题标题】:Android Google Drive SDK: Saving to App FolderAndroid Google Drive SDK:保存到应用文件夹
【发布时间】:2015-10-22 17:22:49
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: java android sqlite google-drive-api google-drive-android-api


    【解决方案1】:

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

    首先你必须决定是使用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 消息广播给感兴趣的设备/用户(不是微不足道的,而是高效的......而且性感)。

    SO 29030110SO 22874657 中描述了在使用多个设备和 GDAA 时必须注意的另一个陷阱。

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

    祝你好运

    【讨论】:

      猜你喜欢
      • 2012-08-23
      • 1970-01-01
      • 1970-01-01
      • 2013-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-13
      相关资源
      最近更新 更多