Различия между /sdcard/emulated/ 0 и/sdcard

Я схожу с ума со странной проблемой. Если я создаю папку внутри моего кода как

directory_path = Environment.getExternalStorageDirectory()
                + "/" + context.getResources().getString(R.string.app_name);

directory = new File(directory_path);
if (!directory.exists()) {
    directory.mkdirs();
}

создается новая папка внутри /sdcard/. Если я пытаюсь напечатать на переменной logcat directory_path, путь будет другим:/storage/emulated/0/ и если я перехожу к этому пути, я нашел другую папку с тем же именем, что и созданный на /sdcard/. Это проблема для меня, потому что, когда я пытаюсь записать некоторые данные в эту папку, everithing идет в одном on/storage/emulated/0, а другой (то есть папка, которую я хочу использовать) остается пустым. Почему?

Ответ 1

Вы пытались прочитать данные? /storage/emulated/ 0/- новый путь, введенный в JB для поддержки нескольких пользователей на планшете. Но пока вы получаете доступ к внешним файлам с помощью Environment.getExternalStorageDirectory(), не имеет значения, где они действительно находятся.

Вот дополнительная информация: https://android.stackexchange.com/questions/35541/why-did-sdcard-turn-into-sdcard-0-with-4-2

Ответ 2

/storage/emulated/0/: Насколько мне известно, это относится к "эмулируемым MMC" ( "часть владельца" ). Обычно это внутренняя. для пользователя здесь "0" - это первый пользователь, известный как владелец устройства. если ты создайте дополнительных пользователей, это число будет увеличиваться для каждого.

/storage/emulated/legacy/как раньше, но указывая на часть в настоящее время работающий пользователь (для владельца это будет символической ссылкой на

/хранение/эмулировать/0/). Таким образом, этот путь должен привести каждого пользователя к его "Часть".

/sdcard/: Согласно комментарию Shywim, это символическая ссылка на...

/mnt/sdcard (Android < 4.0)

/storage/sdcard0 (Android 4.0 +)

Для более подробной информации вы можете посетить stackexchange