API de Google Drive para Android: descarga del archivo db desde la unidad

Estoy usando el siguiente código para descargar un archivo sqlite db ya cargado desde google drive a la carpeta data / data / packagename / database, pero cuando se completa el método, veo un mensaje de advertencia de corrupción db registrado en logcat y también todos los datos en el dispositivo para la aplicación se sobrescribe y aparece en blanco, al abrir la aplicación.

mfile = Drive.DriveApi.getFile(mGoogleApiClient, mResultsAdapter.getItem(0).getDriveId());
                    mfile.openContents(mGoogleApiClient, DriveFile.MODE_READ_ONLY, null).setResultCallback(contentsOpenedCallback);

--mfile is an instance of DriveFile

final private ResultCallback<ContentsResult> contentsOpenedCallback = new ResultCallback<ContentsResult>()
{
    @Override
    public void onResult(ContentsResult result)
    {
        if (!result.getStatus().isSuccess())
        {
            FileUtils.appendLog(getApplicationContext(), Tag + "-onResult", "Error opening file");
            return;
        }

        try
        {
            if (GetFileFromDrive(result))
            {
                        //FileUtils.Restore(getApplicationContext());
                        SharedPrefHelper.EditSharedPreference(getApplicationContext(), Constants.PREFS_DO_RESTORE, false);
            }

        }
        catch (FileNotFoundException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        catch (IOException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
};

private boolean GetFileFromDrive(ContentsResult result)
{
    Contents contents = result.getContents();
    //InputStreamReader rda = new InputStreamReader(contents.getInputStream());
    BufferedReader reader = new BufferedReader(new InputStreamReader(contents.getInputStream()));
    FileOutputStream outStream;
    String currLine;
    boolean restoreSuccess = false;

    File sourceDbFile = BackupDBBeforeDeletion();

    if(sourceDbFile != null)
        sourceDbFile.delete();

    try
    {
        outStream = new FileOutputStream(getApplicationContext().getDatabasePath(Constants.DB_NAME));
        while ((currLine = reader.readLine()) != null)
        {
            outStream.write(currLine.getBytes());
        }

        outStream.flush();

        reader.close();
        outStream.close();
        restoreSuccess = true;
    }
    catch (FileNotFoundException e)
    {
        // TODO: Log exception
    }
    catch (IOException e)
    {
        // TODO: Log Exception
    }

    return restoreSuccess;
}

Cuando se completa el método GetFileFromDrive, aparece un daño de db en LogCat y todos los datos existentes en el archivo de datos de la aplicación (sqlite db) desaparecen.

Ayude, ya que he verificado que el archivo sqlite db cargado en la unidad es correcto y está bien formado, descargándolo y abriéndolo en el navegador Sqlite. Es la descarga del disco que no funciona.

Respuestas a la pregunta(2)

Su respuesta a la pregunta