Como você está usando o armazenamento externo, seu aplicativo deve estar ciente do estado do armazenamento externo, que pode ser obtido por meio de
Environment.getExternalStorageState()
. Você só deve acessar o armazenamento externo quando o estado for
MOUNTED
. Se você estiver tentando abrir um arquivo (ou banco de dados SQLite; é apenas um arquivo!) durante a inicialização do dispositivo, você definitivamente tem problemas porque o armazenamento externo não está montado até a inicialização do dispositivo (após a exibição da tela inicial).
A saída é registrar um
IntentFilter
para ser notificado de todas as alterações no estado de armazenamento externo e se comportar de acordo. É sempre bom ler a documentação! Consulte a documentação do Android para obter detalhes:http://developer.android.com/reference/android/os/Environment.html
Usar o Armazenamento Externo para esse fim é duvidoso, porque você não pode controlar quando ele fica indisponível! Por exemplo, o usuário conecta seu dispositivo ao USB do computador e seleciona a opção "Ativar armazenamento em massa USB", para que possa acessar o armazenamento externo do dispositivo a partir do computador. Más notícias! Seu aplicativo será desconectado do armazenamento externo e provavelmente sem a oportunidade de fazer qualquer IO de limpeza!
Com esse estado de coisas, você agora fica com o que fazer com todos os dados que você colocaria em seu banco de dados, se estivesse disponível.