Eftersom du använder extern lagring måste din applikation vara medveten om tillståndet för extern lagring, som du kan få via Environment.getExternalStorageState()
.
Du måste bara komma åt extern lagring när statusen är MOUNTED
.
Om du försöker öppna en fil (eller SQLite DB; det är bara en fil!) under enhetens start kommer du definitivt att har problem, eftersom extern lagring är inte monterad tills enheten startar långt (efter att startskärmen visas).
Vägen ut ur detta är att registrera ett IntentFilter
att meddelas om alla ändringar i Externt lagringsläge, och bete sig därefter.
Det är alltid en bra idé att läsa dokumentationen! Se Android-dokumentationen för mer information:http://developer.android.com/reference/android/os/Environment.html
Att använda extern lagring för detta ändamål är tveksamt, eftersom du inte kan kontrollera när det blir otillgängligt! Användaren ansluter till exempel sin enhet till USB på sin dator och väljer alternativet "Aktivera USB-masslagring", så att de kan komma åt sin enhets externa lagringsutrymme från sin dator. Dåliga nyheter! Din app kommer att kopplas bort från extern lagring, och troligen utan möjlighet att göra någon sanering av IO!
Med detta tillstånd har du nu vad du ska göra med all data du skulle lägga in i din databas, om den bara var tillgänglig.