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.