Подтвердить что ты не робот

GetExternalStorageDirectory не работает

Я пытаюсь сохранить файл на SD-карте на своем Samsung Galaxy Nexus, работающем 4.2.2. Из моего приложения я использую

Environment.getExternalStorageDirectory()

Но он возвращает

/storage/emulated/0/

Это не то место, где находится моя SDcard-информация. Есть ли какой-либо рабочий метод, который я могу использовать для получения правильного пути к моей SD-карте?

4b9b3361

Ответ 1

Собственно, это правильное местоположение.

Начиная с android 4,2, Google представила несколько учетных записей пользователей. У каждого пользователя есть собственное внешнее хранилище, у которого есть идентификатор пользователя на пути к сохранению уникальности.

Основной (по умолчанию) идентификатор пользователя равен 0. Таким образом, вы получаете /storage/emulated/0/ как путь к внешнему хранилищу.

Ответ 2

Я только что узнал, что это способ Джелли Bean справиться с отсутствием разрешения android.permission.WRITE_EXTERNAL_STORAGE. Я не видел такого поведения со старыми версиями Android.

Просто добавьте эту строку в свой AndroidManifest.xml:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

Ответ 3

Environment.getExternalStorageDirectory() относится к тому, что производитель устройства считается "внешним хранилищем". Я могу быть чем-то другим, кроме SD-карты.

Здесь вы можете получить более подробную информацию: Найти местоположение внешней SD-карты

Ответ 4

Sure? Где, по вашему мнению, установлена ​​ваша SD-карта? Попробуйте сделать ls -l в этом каталоге - это, вероятно, символическая ссылка на /storage/emulated/0/.

Ответ 5

Я думаю, что из-за использования эмулятора genymotion, путь верен, и в Eclipse он находится в

File Explorer - > mnt - > shell - > emulated -> 0 

надеюсь, что это поможет;)

Ответ 6

Я как-то потерял свою символическую ссылку в /storage/emulated/ 0, вызвав аналогичный сбой. То, что я сделал, было использовать приложение камеры, чтобы сделать снимок. Я заметил, что в деталях изображения указано, что он находится внутри /storage/emulated/ 0, хотя этот каталог не существует из файлового проводника. Затем я перезагрузил телефон. После перезагрузки ссылка существовала.