我正在编写一个具有即时通讯功能的应用程序。用户可以在IM功能中写入文本或共享图像。当图像存储在设备中时,图像的文本数据和文件名存储在sqlite文件中。
由于我的服务器无法保留数据,用户在切换到新设备时无法获取聊天记录。通过whatsapp,他们允许用户定期将聊天记录和图像备份到Google云端硬盘,并从驱动器中获取数据,如下图所示。
当我去自己的谷歌驱动器时,我会发现“Whatsapp”已连接到我的谷歌硬盘,如下所示。
我不熟悉Android中的Google Drive API,我想以与Whatsapp相同的方式备份我的sqlite数据库和图像。我知道几乎没有关于将sqlite数据库备份到Google云端硬盘的问题,但它似乎只包含部分代码,这使初学者很难理解。
github上是否有任何示例项目,有关stackoverflow或教程的问题可以让我学习如何在Android中以编程方式逐步备份sqlite数据库和图像 ?
此外,我很惊讶地看到只有whatsapp连接到我的Google云端硬盘,但没有更多其他应用,所以我不知道第三方开发者是否会拥有相同的Google访问权限以与Whatsapp相同的方式驱动并完成备份。
答案 0 :(得分:4)
你见过https://github.com/googledrive/android-demos吗? 我想你需要关注"在App Folder中创建一个文件"将sqlite文件保存在用户隐藏的AppData文件夹中。 要恢复文件,您可以查询AppData文件夹(确保在查询之前调用requestSync()以确保缓存是最新的。)
答案 1 :(得分:3)
这当然可行。您需要以编程方式了解如何upload files to Google Drive。
github上是否会有任何示例项目,有关stackoverflow的问题或教程可以让我学习如何逐步在Android中以编程方式备份sqlite数据库和图像?
有几个样本如:
教程:尝试使用此Java Quickstart for uploading to Drive,因为您将在Android中执行此操作。
Android中saving files to Google Drive SDK的一个示例。
Android and Drive SDK的Github样本。
要上传图片,请注意您将使用image mimetype图像/ png表示.png和图像/ jpeg表示.jpg文件。 要将sql数据库上传到云端硬盘,请参阅代码段from this sample。
String mimeType = MimeTypeMap.getSingleton().getExtensionFromMimeType("db");
MetadataChangeSet changeSet = new MetadataChangeSet.Builder()
.setTitle(GOOGLE_DRIVE_FILE_NAME) // Google Drive File name
.setMimeType(mimeType)
.setStarred(true).build();
// create a file on root folder
Drive.DriveApi.getRootFolder(api)
.createFile(api, changeSet, result.getDriveContents())
.setResultCallback(backupFileCallback);