Poiché stai utilizzando l'archiviazione esterna, l'applicazione deve essere a conoscenza dello stato dell'archiviazione esterna, che puoi ottenere tramite Environment.getExternalStorageState()
.
Devi accedere alla memoria esterna solo quando lo stato è MOUNTED
.
Se stai cercando di aprire un file (o SQLite DB; è solo un file!) durante l'avvio del dispositivo, lo farai sicuramente hanno problemi, perché la memoria esterna non è montata fino all'avvio del dispositivo (dopo la visualizzazione della schermata iniziale).
La via d'uscita è registrare un IntentFilter
per essere informato di tutte le modifiche allo stato di archiviazione esterna e comportarsi di conseguenza.
È sempre una buona idea leggere la documentazione! Consulta la documentazione di Android per i dettagli:http://developer.android.com/reference/android/os/Environment.html
L'uso dell'archiviazione esterna per questo scopo è dubbio, perché non puoi controllare quando diventa non disponibile! Ad esempio, l'utente collega il proprio dispositivo all'USB del proprio computer e seleziona l'opzione "Abilita archiviazione di massa USB", in modo da poter accedere all'archivio esterno del proprio dispositivo dal proprio computer. Cattive notizie! La tua app verrà disconnessa dall'archiviazione esterna e molto probabilmente senza l'opportunità di eseguire operazioni di pulizia IO!
Con questo stato di cose, ora ti rimane cosa fare con tutti i dati che inseriresti nel tuo database, se solo fossero disponibili.