Google Drive - mayurparmar2/AlarmDemo GitHub Wiki
text.java
// Set up the Drive API client
GoogleApiClient mGoogleApiClient = new GoogleApiClient.Builder(this)
.addApi(Drive.API)
.addScope(Drive.SCOPE_FILE)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();
// Retrieve files from Google Drive
Query query = new Query.Builder()
.addFilter(Filters.eq(SearchableField.TITLE, "MyFile.txt"))
.build();
DriveApi.MetadataBufferResult result = Drive.DriveApi.query(mGoogleApiClient, query).await();
// Save files to SQLite database
SQLiteOpenHelper dbHelper = new MyDatabaseHelper(this);
SQLiteDatabase db = dbHelper.getWritableDatabase();
ContentValues values = new ContentValues();
for (Metadata file : result.getMetadataBuffer()) {
values.put("name", file.getTitle());
values.put("type", file.getMimeType());
values.put("size", file.getFileSize());
values.put("content", getContentBytes(file));
db.insert("files", null, values);
}
db.close();
// Zip the files
File zipFile = new File("backup.zip");
ZipOutputStream zipOutputStream = new ZipOutputStream(new FileOutputStream(zipFile));
Cursor cursor = db.rawQuery("SELECT name, content FROM files", null);
while (cursor.moveToNext()) {
String name = cursor.getString(0);
byte[] content = cursor.getBlob(1);
ZipEntry entry = new ZipEntry(name);
zipOutputStream.putNextEntry(entry);
zipOutputStream.write(content);
zipOutputStream.closeEntry();
}
zipOutputStream.close();
cursor.close();
// Upload the zip file to Google Drive
DriveFolder folder = Drive.DriveApi.getRootFolder(mGoogleApiClient);
MetadataChangeSet changeSet = new MetadataChangeSet.Builder()
.setTitle("Backup.zip")
.setMimeType("application/zip")
.build();
DriveApi.DriveContentsResult contentsResult = Drive.DriveApi.newDriveContents(mGoogleApiClient).await();
OutputStream outputStream = contentsResult.getDriveContents().getOutputStream();
FileInputStream inputStream = new FileInputStream(zipFile);
byte[] buffer = new byte[4096];
int bytesRead;
while ((bytesRead = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, bytesRead);
}
inputStream.close();
outputStream.close();
Drive.Drive