java - 安卓谷歌驱动器 SDK : Saving to App Folder

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

对于我当前的项目,我想允许用户创建一个 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/

相关文章:

javascript - 如何使用一个代码库在线和离线访问 HTML5/JS 应用程序中的数据库?

iphone - SQLite 中的法语字符..如何在 iPhone 应用程序中正确显示?

java - 如何升级我的 Jira 客户端?

java - Eclipse 和花括号

java - Java 中静态反序列化的差异取决于序列化对象的时间

Android WebView 在浏览器而不是应用程序中打开链接

android - OkHttp3,改造和证书固定 : how to give an expiration to the pinning

android - Android 中删除表中所有行的最佳方法是什么

java - Web服务中的Spring Security CAS实现

android - 使用 TextView 自动调整线性布局的大小