`/ хранение / подражания / наследие /` против `/ хранение / подражания / 0 /` против ` данные / данные / MYAPP "

? Elad Benda @ | Original: StackOverFlow
---

Я хочу, чтобы сохранить в мое приложениеImageFile

Я хочу " Google+ кадрирования приложение ", чтобы использовать его .

Новпоследствии открывает другое изображение .

Я предполагаю, что это проблема с разрешениями .

В моем коде я сохранить здесь:

Является ли это внешнее запоминающее ? Environment.getExternalStorageDirectory().getAbsolutePath(), Которая возвращает : /storage/emulated/0/myApp/file1.tmp

с помощью adb shell, это посмотретьфайл фактически спас в : /storage/emulated/legacy/myApp/file1.tmp

почемуразница?

я должен использовать это место вместо этого? Является ли это внешнее запоминающее ?

getAppContext().getFilesDir().getParent(), Которая возвращает : ` данные / данные / MYAPP "

---

Top 5 ответ

1Squonk @

Историческиразница между внутренним и внешним хранения было как следует ...

Внутренний:внутреннее ОЗУ из Android устройства, используемого для выделения личное хранилище для каждого приложения . Память, выделенная защищен, чтобы предотвратить доступ любого другого приложения (за исключением укоренившихся устройств) .

Внешний: Во многих случаяхSD карты без ограничений безопасности, то есть, все приложения могут доступ ко всем областям «внешнего» хранения.

По мере появления новых версий Android пришли вместе, и новые устройства имеют все больше и больше внутреннего ОЗУ,разница между внутренним и внешним, становится размытым . Например мой Nexus 7 не имеет слот SD -карты.

В случае устройств, без истинного внешнего хранения, она по-прежнему необходимо для Android, чтобы обеспечить эмуляцию внешний накопитель для того, чтобы сохранить совместимость с более старыми приложениями. Другими словамиRAM физически внутренний ( несъемные ), ночасть его распределяют и API-интерфейсы для Android файловых систем лечения этот раздел как " внешний " и считывания.

Что касается путей вы видите для внешнего хранения, таких как ...

/storage/emulated/0/myApp/file1.tmp
/storage/emulated/legacy/myApp/file1.tmp

... один или другой из них ( возможно, и оба ) являетсяперенаправление или "виртуальная " путь к той же части эмулируемого внешнего каталога и файла.

Вот почему важно всегда использовать правильный вызов API, чтобы получить доступ к файлам и каталогам, а не предполагая, жестко запрограммированный путь, она вполне может варьироваться от устройства к устройству.

Если вы используете Environment.getExternalStorageDirectory(), вы можете быть уверены, что любая другая приложение, которое делаетто же самое будет в состоянии получить доступ к каким-либо файлы, созданные там.

Если вы используете getFilesDir(), а затем вы обращаетесь корень внутренней памяти, выделенной частной ваше приложение и доступен только для вашего приложения (хотя, как я уже говорилкорнями телефон может получать доступ к частной / внутренний хранения ) .