Я успешно реализовал Drive Rest API, и, похоже, все работает нормально. Что меня смущает, так это обработка ошибок, если что-то идет не так (потеря соединения и т. Д.). Я предполагаю, что эти ошибки являются распространенными, поэтому был бы стандартный ответ, который я мог бы добавить к своему addOnFailureListener () или написать код для всех возможных ошибок. Как лучше всего обрабатывать ошибки REST.
Основная деятельность:
public void doRestore(int position){
progressDialog = ProgressDialog.show(this, null, getString(R.string.backup_restore_message), false, false);
mDriveServiceHelper.restoreFile(data.get(position).getId()).
addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
progressDialog.dismiss();
finish();
Intent i = new Intent(BackupNew.this, Splash.class);
startActivity(i);
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
progressDialog.dismiss();
// What do I add here???
}
});
}
Вспомогательный класс:
public Task<Void> restoreFile(final String fileId) {
return Tasks.call(mExecutor, new Callable<Void>() {
@Override
public Void call() throws Exception {
InputStream is = mDriveService.files().get(fileId).executeMediaAsInputStream();
FileOutputStream myOutput = new FileOutputStream(context.getDatabasePath("appData"));
byte[] buffer = new byte[1024];
int length;
while ((length = is.read(buffer)) > 0) {
myOutput.write(buffer, 0, length);
}
myOutput.flush();
myOutput.close();
is.close();
return null;
}
});
}