Giả sử, bạn có một đường dẫn đến MyDbFile.db của mình , bạn có thể sử dụng một cấu trúc như sau:
...
saveToDrive(
Drive.DriveApi.getAppFolder(getGoogleApiClient()),
"MyDbFile.db",
"application/x-sqlite3",
new java.io.File("\...\...\...\MyDbFile.db")
);
...
DriveId mDriveId;
/******************************************************************
* create file in GOODrive
* @param pFldr parent's ID
* @param titl file name
* @param mime file mime type (application/x-sqlite3)
* @param file file (with content) to create
*/
void saveToDrive(final DriveFolder pFldr, final String titl,
final String mime, final java.io.File file) {
if (getGoogleApiClient() != null && pFldr != null && titl != null && mime != null && file != null) try {
// create content from file
Drive.DriveApi.newDriveContents(getGoogleApiClient()).setResultCallback(new ResultCallback<DriveContentsResult>() {
@Override
public void onResult(DriveContentsResult driveContentsResult) {
DriveContents cont = driveContentsResult != null && driveContentsResult.getStatus().isSuccess() ?
driveContentsResult.getDriveContents() : null;
// write file to content, chunk by chunk
if (cont != null) try {
OutputStream oos = cont.getOutputStream();
if (oos != null) try {
InputStream is = new FileInputStream(file);
byte[] buf = new byte[4096];
int c;
while ((c = is.read(buf, 0, buf.length)) > 0) {
oos.write(buf, 0, c);
oos.flush();
}
}
finally { oos.close();}
// content's COOL, create metadata
MetadataChangeSet meta = new Builder().setTitle(titl).setMimeType(mime).build();
// now create file on GooDrive
pFldr.createFile(getGoogleApiClient(), meta, cont).setResultCallback(new ResultCallback<DriveFileResult>() {
@Override
public void onResult(DriveFileResult driveFileResult) {
if (driveFileResult != null && driveFileResult.getStatus().isSuccess()) {
DriveFile dFil = driveFileResult != null && driveFileResult.getStatus().isSuccess() ?
driveFileResult.getDriveFile() : null;
if (dFil != null) {
// BINGO , file uploaded
dFil.getMetadata(getGoogleApiClient()).setResultCallback(new ResultCallback<MetadataResult>() {
@Override
public void onResult(MetadataResult metadataResult) {
if (metadataResult != null && metadataResult.getStatus().isSuccess()) {
DriveId mDriveId = metadataResult.getMetadata().getDriveId();
}
}
});
}
} else { /* report error */ }
}
});
} catch (Exception e) { e.printStackTrace(); }
}
});
} catch (Exception e) { e.printStackTrace(); }
}
/*******************************************************************
* get file contents
*/
void readFromGooDrive() {
byte[] buf = null;
if (getGoogleApiClient() != null && getGoogleApiClient().isConnected()) try {
DriveFile df = Drive.DriveApi.getFile(getGoogleApiClient(), mDriveId);
df.open(getGoogleApiClient(), DriveFile.MODE_READ_ONLY, null)
.setResultCallback(new ResultCallback<DriveContentsResult>() {
@Override
public void onResult(DriveContentsResult driveContentsResult) {
if ((driveContentsResult != null) && driveContentsResult.getStatus().isSuccess()) {
DriveContents cont = driveContentsResult.getDriveContents();
// DUMP cont.getInputStream() to your DB file
cont.discard(getGoogleApiClient()); // or cont.commit(); they are equiv if READONLY
}
}
});
} catch (Exception e) { e.printStackTrace(); }
}
Chúc may mắn