Тъй като използвате външно хранилище, приложението ви трябва да е наясно със състоянието на външно хранилище, което можете да получите чрез Environment.getExternalStorageState()
.
Трябва да осъществявате достъп до външна памет само когато състоянието е MOUNTED
.
Ако се опитвате да отворите файл (или SQLite DB; това е просто файл!) по време на стартиране на устройството, вие определено имат проблеми, тъй като външното съхранение ене монтирано до началото на стартирането на устройството (след като се покаже началният екран).
Изходът от това е да регистрирате IntentFilter
да бъдете уведомени за всички промени в състоянието на външната памет и да се държите съответно.
Винаги е добра идея да прочетете документацията! Вижте документацията за Android за подробности:http://developer.android.com/reference/android/os/Environment.html
Използването на външно хранилище за тази цел е съмнително, защото не можете да контролирате кога то стане недостъпно! Например, потребителят включва устройството си в USB на своя компютър и избира опцията „Активиране на USB Mass Storage“, за да може да има достъп до външното хранилище на устройството си от своя компютър. Лоши новини! Приложението ви ще бъде изключено от външното хранилище и най-вероятно без възможност за извършване на почистване на IO!
При това състояние на нещата сега ви остава какво да правите с всички данни, които бихте поставили във вашата база данни, само ако бяха налични.