Я делаю приложение OCR в Android. Для этого мне нужно хранить обученные данные и изображения в папке моего приложения. До сих пор я делал это, используя
public static String DATA_PATH = Environment.getExternalStorageDirectory().toString() + "/NewsReader/"
и это прекрасно работает на устройствах с внешними SD-картами.
Но когда я пытаюсь запустить одно и то же приложение на устройстве, в которое либо не вставлены SD-карты и которое работает с внутренней памятью, либо на таком устройстве, как Nexus, у которого есть только внутренняя память, приложение дает сбой. Какие альтернативы у меня есть здесь. Я могу проверить состояние внешнего хранилища, чтобы узнать, доступно оно или нет, но если нет, то что должно делать мое приложение, а не просто сбой. Я даже пытался сделать getFilesDir().toString() + "/NewsReader/"
, но тот же результат.
ИЗМЕНИТЬ
Из некоторых ответов, которые я получаю, мой вопрос выше не говорит о моей реальной проблеме. Позвольте мне прояснить это подробнее.
Я делаю это: public static String DATA_PATH = Environment.getExternalStorageDirectory().toString() + "/NewsReader/"
и он отлично создает папку NewsReader в телефоне, когда я запускаю его на устройстве с внешними SD-картами. Но не работает на устройствах только с внутренней памятью. И, чтобы добавить, в настоящее время я делаю весь этот бизнес по созданию файлов в своей активности splsh в потоке, но раньше, когда я делал тот же код в своей обычной Activity OnCreate, он работал на всех устройствах.
Environment.getExternalStorageDirectory()
вернет путь к внешнему хранилищу. в большинстве случаев это путь к SD-карте. Но в некоторых телефонах внешнее хранилище в памяти телефона. И не используйте закодированные пути. ИспользуйтеFile.Separator
. То, что вы делаете, правильно - person Raghunandan   schedule 02.04.2014