Поскольку вы используете внешнее хранилище, ваше приложение должно знать о состоянии внешнего хранилища, которое вы можете получить через Environment.getExternalStorageState()
.
Доступ к внешнему хранилищу разрешается только при состоянии MOUNTED
.
Если вы пытаетесь открыть файл (или SQLite DB; это просто файл!) Во время запуска устройства, у вас определенно возникнут проблемы, поскольку внешнее хранилище не смонтировано до запуска устройства (после отображения главного экрана).
Выход из этого - зарегистрировать IntentFilter
, чтобы получать уведомления обо всех изменениях в состоянии внешнего хранилища, и вести себя соответствующим образом.
Всегда полезно прочитать документацию! Подробности смотрите в документации Android: http://developer.android.com/reference/android/os/Environment.html
Использование внешнего хранилища для этой цели сомнительно, потому что вы не можете контролировать, когда оно становится недоступным! Например, пользователь подключает свое устройство к USB на своем компьютере и выбирает опцию «Включить USB Mass Storage», чтобы они могли получить доступ к внешнему хранилищу своего устройства со своего компьютера. Плохие новости! Ваше приложение будет отключено от внешнего хранилища и, скорее всего, не сможет выполнить очистку ввода-вывода!
С таким положением дел у вас теперь есть Что делать со всеми данными, которые вы бы поместили в свою базу данных, если бы только они были доступны.