【发布时间】:2018-06-25 19:59:17
【问题描述】:
嘿,我在 github 上关注 Google Drive 的 QuickStart:
我使用了 SCOPE_APPFOLDER,所以当我运行应用程序时,它要求我登录到谷歌帐户并授予打开应用程序文件夹的权限,在我接受后我去谷歌驱动器,是的,它为我的应用程序打开了一个文件夹“应用程序管理器”(1KB)。
我的问题是: 1)如何将数据库文件(我有它的路径)上传到 Google Drive AppFolder? 2)如何下载我将从 AppFolder 上传的那些数据库文件并将它们放在我想要的路径中?
我正在编写一些代码来备份设备内的那些数据库文件但是,它看起来像这样:
//Back Up
private void BackUp() {
try {
final String inFileName = "/data/user/0/com******/databases/**********";
File dbFile = new File(inFileName);
FileInputStream fis = new FileInputStream(dbFile);
String outFileName = Environment.getExternalStorageDirectory() + "/********";
// Open the empty db as the output stream
OutputStream output = new FileOutputStream(outFileName);
// Transfer bytes from the inputfile to the outputfile
byte[] buffer = new byte[1024];
int length;
while ((length = fis.read(buffer)) > 0) {
output.write(buffer, 0, length);
}
// Close the streams
output.flush();
output.close();
fis.close();
} catch (Exception e) {
}
}
如何使用类似上述代码的东西来谷歌驱动 AppFolder????
以下是我用于 Google Drive Stufe 的代码
//Path of the file
final String inFileName = "/data/user/0/com.******/databases/Categor****";
File dbFile = new File(inFileName);
我用它来创建 AppFolder:
private void createFileInAppFolder() {
final Task<DriveFolder> appFolderTask = getDriveResourceClient().getAppFolder();
final Task<DriveContents> createContentsTask = getDriveResourceClient().createContents();
Tasks.whenAll(appFolderTask, createContentsTask)
.continueWithTask(task -> {
DriveFolder parent = appFolderTask.getResult();
DriveContents contents = createContentsTask.getResult();
OutputStream outputStream = contents.getOutputStream();
try (Writer writer = new OutputStreamWriter(outputStream)) {
writer.write("Hello World!");
}
MetadataChangeSet changeSet = new MetadataChangeSet.Builder()
.setTitle("New file")
.setMimeType("text/plain")
.setStarred(true)
.build();
final String inFileName = "/data/user/0/com.camel.work_list/databases/CategoriesSpinner";
File dbFile = new File(inFileName);
FileInputStream fis = new FileInputStream(dbFile);
MetadataChangeSet test = new MetadataChangeSet(fis);
return getDriveResourceClient().createFile(parent, changeSet, contents);
})
.addOnSuccessListener(this,
driveFile -> {
showMessage(getString(R.string.file_created));
//finish();
})
.addOnFailureListener(this, e -> {
Log.e(TAG, "Unable to create file", e);
showMessage(getString(R.string.file_create_error));
//finish();
});
}
所以我从这段代码中了解到,当它打开 AppFolder 时,它会创建一些带有“Hello World”的文本文件
如何从数据库中获取我的文件并上传到此 AppFolder?以及如何下载/恢复这些文件并将它们放回设备内的 app 文件夹?
谢谢你们:)
【问题讨论】:
-
你能找到解决办法吗?我也有同样的问题。
标签: android database android-studio database-backups google-drive-android-api