Dado que está utilizando Almacenamiento externo, su aplicación debe conocer el estado de Almacenamiento externo, que puede obtener a través del Environment.getExternalStorageState()
.
Solo debe acceder al Almacenamiento externo cuando el estado es MOUNTED
.
Si está intentando abrir un archivo (o SQLite DB;! Es sólo un archivo) durante el inicio del dispositivo, se definitivamente tener problemas, no porque almacenamiento externo es montado hasta bien entrado el arranque del equipo (después de Se muestra la pantalla de inicio).
La manera de salir de esto es registrar un IntentFilter
para que se le notifiquen todos los cambios en el estado de Almacenamiento externo, y se comporte como corresponda.
¡Siempre es una buena idea leer la documentación! Consulte la documentación de Android para obtener más información: http://developer.android.com/reference/android/os/Environment.html
¡El uso de almacenamiento externo para este propósito es dudoso, porque no puede controlar cuándo deja de estar disponible! Por ejemplo, el usuario conecta su dispositivo a USB en su computadora y selecciona la opción "Habilitar almacenamiento masivo USB" para que pueda acceder al almacenamiento externo de su dispositivo desde su computadora. ¡Malas noticias! Su aplicación se desconectará del almacenamiento externo, y lo más probable es que no tenga la oportunidad de hacer ningún IO de limpieza.
Con este estado de cosas, ahora se queda con Qué hacer con todos los datos que pondría en su base de datos, si solo estuviera disponible.
¿Por qué fue esto downvoted. Estoy interesado en esto también ... – Kurru
Sí, este es un problema real. ¿Alguna ayuda? –
Tengo el mismo problema, pero con el almacenamiento interno, por lo que la respuesta actual no se aplica. – Zitrax