Protože používáte externí úložiště, vaše aplikace si musí být vědoma stavu externího úložiště, který můžete získat pomocí Environment.getExternalStorageState()
.
K externímu úložišti musíte přistupovat pouze tehdy, když je stav MOUNTED
.
Pokud se pokoušíte otevřít soubor (nebo SQLite DB; je to jen soubor!) během spouštění zařízení, určitě mají problémy, protože externí úložiště není připojeno až do spuštění zařízení (po zobrazení domovské obrazovky).
Cesta ven je zaregistrovat IntentFilter
být informován o všech změnách stavu externího úložiště a podle toho se chovat.
Vždy je dobré si přečíst dokumentaci! Podrobnosti naleznete v dokumentaci systému Android:http://developer.android.com/reference/android/os/Environment.html
Použití externího úložiště pro tento účel je pochybné, protože nemůžete ovlivnit, kdy bude nedostupné! Uživatel například zapojí své zařízení do USB na svém počítači a vybere možnost „Povolit velkokapacitní úložiště USB“, aby mohl ze svého počítače přistupovat k externímu úložišti svého zařízení. Špatné zprávy! Vaše aplikace bude odpojena od externího úložiště a s největší pravděpodobností bez možnosti provést vyčištění IO!
S tímto stavem věcí vám nyní zbývá, co dělat se všemi daty, která byste vkládali do své databáze, kdyby jen byla dostupná.