domingo, 12 de abril de 2015

Dica: copiando o db SQLite do assets, copyDbFromAssets()

 Às vezes temos um db pronto e queremos fazer a distribuição no próprio apk. Uma forma é deixar o db na pasta assets e na primeira execução do app fazer a cópia para a pasta dos bancos.
 Segue um código que tenho usado.




  Segue um trecho de uma AsyncTask para executar a cópia:




  Na Activity, chamamos a asyncTask:




  Um bom lugar para usar essa rotina é na activity de Splash Screen, enquanto faz a cópia em background fica no splash screen.

 Abraços

2 comentários:

  1. No trecho de uma AsyncTask, o que seria esse método getBaseContext() ? o que é para ele retornar?

    Quando eu quiser atualizar o banco(mandar o mesmo banco com mais inserts), faço o mesmo procedimento?

    ResponderExcluir
    Respostas
    1. Olá Leandro, no caso minha AsyncTask foi definido na Activity, então esse método é da Activity (herda de ContextWrapper), ele retorna um Context. Poderia ter usado, MainActivity.this.

      Poderia, mas nesse caso o teste de existência do db tem que ser alterado, já que o db já vai existir.

      Excluir