Problema com backup de banco de dados SQLite no android

Na minha aplicação uso um banco de dados SQLite. Nela eu consigo inserir e recuperar dados sem problemas. na aplicação também tem a função de fazer backup do banco de dados, onde um arquivo é criado e salvo na memória interna do aparelho.

método que cria a pasta no armazenamento interno:

private void criarDiretorio(){

    File folder = new File(Environment.getExternalStorageDirectory() + "/backupControledeOs");

    if (!folder.exists()) {
        folder.mkdirs();

    }
}

método que cria o arquivo de backup:

private void fazerBackup() {

    try {
        // Caminho de Origem do Banco de Dados
        InputStream in = new FileInputStream(
                new File(Environment.getDataDirectory()
                        + "/data/com.studio.controledeos/databases/controleos.db"));

        // Caminho de Destino de Backup do Banco de Dados
        FileOutputStream out = new FileOutputStream(new File(
                Environment.getExternalStorageDirectory()
                        + "/backupControledeOs/arquivo_backup.bkp"));

        byte[] buf = new byte[1024];
        int len;
        while ((len = in.read(buf)) > 0) {
            out.write(buf, 0, len);
        }
        Toast.makeText(getApplicationContext(), "Backup realizado com sucesso!", Toast.LENGTH_SHORT).show();
        in.close();
        out.close();
    } catch (FileNotFoundException e) {
        Toast.makeText(getApplicationContext(), "Erro ao fazer backup!", Toast.LENGTH_SHORT).show();
        e.printStackTrace();
    } catch (IOException e) {
        Toast.makeText(getApplicationContext(), "Erro ao fazer backup!", Toast.LENGTH_SHORT).show();
        e.printStackTrace();
    }

}

método que restaura o backup:

private void restaurarBackup(){

    try {
        // Caminho do Backup Banco de Dados
        InputStream in = new FileInputStream(
                new File(Environment.getExternalStorageDirectory()
                        + "/backupControledeOs/arquivo_backup.bkp"));

        // Caminho de Destino do Backup do Banco de Dados
        OutputStream out = new FileOutputStream(new File(
                Environment.getDataDirectory()
                        + "/data/com.studio.controledeos/databases/controleos.db"));



        byte[] buf = new byte[1024];
        int len;
        while ((len = in.read(buf)) > 0) {
            out.write(buf, 0, len);
        }
        Toast.makeText(getApplicationContext(), "Restaurado com sucesso!", Toast.LENGTH_SHORT).show();
        in.close();
        out.close();
    } catch (FileNotFoundException e) {
        Toast.makeText(getApplicationContext(), "Erro ao restaurar!", Toast.LENGTH_SHORT).show();
        e.printStackTrace();
    } catch (IOException e) {
        Toast.makeText(getApplicationContext(), "Erro ao restaurar!", Toast.LENGTH_SHORT).show();
        e.printStackTrace();
    }

}

Com isso eu consigo fazer backup e restaurar, só que somente pelo emulador.
Quando instalo o apk no celular, faz o backup, mas na hora de restaurar, não da erro nenhum, mas também os dados não são restaurados.