API Android do Google Drive - Download de arquivo db da unidade

Estou usando o código abaixo para baixar um arquivo sqlite db já carregado do google drive para a pasta data / data / packagename / database, mas quando o método é concluído, vejo uma mensagem de aviso de corrupção de db registrada no logcat e também todos os dados no dispositivo para o aplicativo é substituído e aparece em branco ao abrir o aplicativo.

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;
}

Quando o método GetFileFromDrive é concluído, uma corrupção de banco de dados aparece no LogCat e todos os dados existentes no arquivo da base de dados do aplicativo (sqlite db) desaparecem.

Por favor, ajudem, como verifiquei que o arquivo sqlite db carregado da unidade está correto e bem formado, baixando o mesmo e abrindo-o no Sqlite Browser. É o download da unidade que não está funcionando.

questionAnswers(2)

yourAnswerToTheQuestion