Вы также должны убедиться, что подсистема внешнего хранилища находится в правильном состоянии;используйте Environment.getExternalStorageState()
и ищите Environment.MEDIA_MOUNTED
, который является единственным безопасным состоянием.
Также неплохо сузить обработку исключений до IOException
вокруг этих разделов, чтобы не перевыпускать после ввода-вывода-специфичные проблемы, например, отключение носителя.
Если вам нужны события, существуют широковещательные намерения (Intent.ACTION_MEDIA_xxx
) с той же информацией, которую вы можете зарегистрировать с помощью IntentListener
.
Также обратите внимание, чтовнешнее хранилище может быть отключено при использовании USB для отладки!
Существует также длительный период запуска устройства, когда внешнее хранилище недоступно.Если вы выполняете какие-либо действия в службах при запуске, это проблема.
В общем случае ваше приложение должно знать о состоянии внешнего хранилища при обращении к нему и обрабатывать случаи, когда оно недоступно или становится недоступным при доступеэто.