У меня есть следующая ситуация: Android 4.1, устройство не имеет внешней SD-карты. Следующий код:Environment.getExternalStorageDirectory() возвращает неправильный путь
File dir = new File(Environment.getExternalStorageDirectory());
возвращает
/хранение/sdcard0
Затем я пытаюсь создать файл там и получить ошибку
java.io.IOException: открыть не удалось: EACCES (Отказано в).
Мое приложение имеет все необходимые строки в своем манифесте:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
Для того, чтобы решить эту проблему, я начал ADB и получил список файлов, это фрагмент:
lrwxrwxrwx корень корень 2000-01-01 3:12 SDCard ->/хранение/sdcard0
lrwxrwxrwx корень корень 2000-01-01 3:12 sdcard2 ->/хранение/sdcard1
д - хт-хт-й система sdcard_r 2000-01- 01 03:12 хранение
И у меня нет разрешения на доступ к /хранению/sdcard0, но я могу получить доступ к /хранению/sdcard1 есть каталоги:
ABBYY
Сигнализация
Android
Книги
CheetahBrowser
DCIM
Скачать
SlideIT
т.д.
Кажется, что getExternalStorageDirectory() просто работает плохо. И это кажется странным из-за других приложений, которые могли бы записывать файлы в правильном месте. Что я делаю неправильно?
Update:
getExternalStorageState() возвращает "удален"
Я игнорировал результат getExternalStorageDirectory() и установить путь вручную "/ хранение/sdcard1", то все хорошо работает, я могу создать dirs и файлы.
проверить хранилище с помощью getExternalStorageState(), если он установлен или нет ... – Opiatefuchs