对于我当前的项目,我想允许用户创建一个sqlite数据库文件并让他们输入一些内容。然后,用户可以选择登录其Google云端硬盘帐户并上传此文件。之后,在用户进行进一步编辑之后,上载新数据库文件以替换旧文件。最后,如果用户有多个设备,则应从Google驱动器下载数据库并替换设备上存储的现有文件。
目前,我已成功设置Google Drive SDK身份验证,我可以使用我的帐户登录该应用。
我的主要问题是,当我选择按同步按钮时,如何将sqlite数据库文件上传到APP文件夹? (当用户需要同步时应该调用此方法)
此外,如何将sqlite数据库文件上传到APP文件夹?
答案 0 :(得分:4)
您的问题有点广泛,但我会尝试向您发送正确的方向。
首先,您必须决定是使用REST Api还是GDAA。两者都将完成相同的事实(实际上GDAA的功能现在有点窄,但对于你的情况会这样做)。 最大的区别是GDAA将为您处理在线/离线状态,使用REST Api,您必须实现某种非UI线程(同步服务)同步。此外,使用GDAA时必须注意延迟问题。
接下来,上传SQLite数据库的过程与任何其他二进制数据流相同。
抓住' xxx.db'文件,输出流(或byte []缓冲区)并创建一个带有标题+ mimetype元数据的GooDrive文件,将流推入其内容并以快乐的方式发送。标准文件夹和app文件夹之间的唯一区别是文件的父文件。
您将获得一个ID,您可以随后将该文件下载到设备中。或者您可以使用元数据搜索(在您的情况下为标题)来获取此ID。它再次作为输入流,您将其转储到' xxx.db'您设备上的文件。
问题的第二部分涉及多个设备。没有任何api会通知您有关GooDrive的更改,因此您必须实施以下两种策略之一:
1 /轮询(ouch),最好是同步服务,系统为您提供同步间隔。
2 / GCM消息向感兴趣的设备/用户广播(不是微不足道,但有效且性感)。
SO 29030110和SO 22874657中介绍了在使用GDAA的多台设备时必须注意的另一个陷阱。
如果您决定使用2 api,我会为REST和GDAA维护基本的CRUD实施演示。 GDAADemo还有一个使用app文件夹的选项。
祝你好运