Эй, я следил за QuickStart на Google Диске на github:
https://github.com/gsuitedevs/android-samples/blob/master/drive/demos/app/src/main/java/com/google/android/gms/drive/sample/demo/CreateFileInAppFolderActivity.java
Я использовал SCOPE_APPFOLDER, поэтому, когда я запустил приложение, он попросил меня войти в учетную запись Google идать доступ, чтобы открыть папку приложения, после того, как я согласен, я захожу на google drive и да, он открывает папку для моего приложения в "Диспетчере приложений" (1 КБ).
Мой вопрос: 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) {
}
}
Как я могу использовать что-то вроде приведенного выше кода для Google Drive 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?и Как я могу загрузить / восстановить эти файлы и поместить их обратно в папку приложения на устройстве?
Спасибо, ребята:)