Boa noite.
Consegui fazer a Exportação do banco de dados de um app do Android Studio para a memória Externa do Celular, porém estou querendo fazer o inverso agora, ou seja, pegar esse arquivo que foi salvo na memória externa do celular e salvá-lo na memória do sistema do app, onde está o banco de dados SQLite.
Fiz a importação do arquivo usando a mesma lógica da exportação, só que invertendo os valores com o fim de resgatar esse arquivo que está NA memória externa do celular PARA A memória do sistema, onde está o banco de dados.
Para salvar o meu banco de dados NA memória externa do celular eu fiz:
File pastaOrigem = new File("//data/data/sistema.escola/databases/Escola.db");
File pastaDestino = new File(Environment.getExternalStorageDirectory() + "/BACKUP_APP_ESCOLA");
File arquivoDestinoExterno = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/BACKUP_APP_ESCOLA/ARQUIVO_DE_BACKUP");
try {
pastaDestino.mkdir();
FileChannel input = new FileInputStream(pastaOrigem).getChannel(); // FileInputStream é a leitura de fluxo de dados
FileChannel Output = new FileOutputStream(arquivoDestinoExterno).getChannel(); // FileOutputStream é um fluxo de saída para gravar dados em um File
Output.transferFrom(input, 0, input.size());
input.close();
Output.close();
}
catch (IOException e) {
e.printStackTrace();
}
Agora desejo fazer o inverso, pegar ele DA memória externa para colocá-lo NO sistema (tipo, se o app foir desinstalado, ao instalá-lo novamente, importaria o arquivo que foi exportado, para recuperar os dados que foram salvos). Nesse caso fiz o código assim:
public String importacaoBanco() {
String retorno = null;
File pastaOrigem = new File(Environment.getExternalStorageDirectory() + "/BACKUP_APP_ESCOLA");
File arquivoDestinoSistema = new File(Environment.getDataDirectory()+"//data/data/sistema.escola/databases/Escola.db");
try {
FileChannel input = new FileInputStream(pastaOrigem).getChannel();
FileChannel Output = new FileOutputStream(arquivoDestinoSistema).getChannel();
Output.transferFrom(input, 0, input.size());
input.close();
Output.close();
return retorno = "UPLOAD REALIZADO COM SUCESSO!";
}
catch (IOException e) {
e.printStackTrace();
return retorno = "UPLOAD NÃO REALIZADO!";
}
}
Mas está rodando o catch(), ou seja, ele não está importando o arquivo DA memória externa do celular PARA O sistema do app, onde está salvo o banco de dados. Na vdd o arquivo do sistema seria substituído por este que foi exportado/salvo na memória externa do celular.
Obg!










)