Каковы различия между внутренним хранилищем, внешним хранилищем, SD-картой и съемным хранилищем?

Из официальной документации :

Использование внешнего хранилища

Каждое Android-совместимое устройство поддерживает общую «внешнюю память», которую вы можете использовать для сохранения файлов. Это может быть съемный носитель (например, SD-карта) или внутреннее (несъемное) хранилище …

Я действительно запутался в этом вопросе. Насколько я понимаю, использование внешнего хранилища не обязательно означает использование съемной карты, верно? Однако, говоря о внешнем хранилище, он всегда упоминается как «SD-карта».

Я разрабатываю приложение, которое загружает файлы .mp3 из Интернета. Я хочу сохранить эти файлы в памяти телефона (не хочу использовать какое-либо съемное устройство), но для того, что я узнал, эти файлы должны быть сохранены во внешней памяти. Однако я хотел бы предложить возможность импортировать Файл со съемного устройства. Где и как сохранить эти файлы?

благодаря

При создании приложения, использующего внутреннее хранилище, ОС Android создает уникальную папку, доступ к которой будет доступна только из приложения, поэтому никакое другое приложение или даже пользователь не смогут увидеть, что находится в папке.

Внешнее хранилище больше похоже на хранилище общего пользования, поэтому на данный момент это sdcard, но может стать любым другим типом хранилища (удаленный жесткий диск или что-то еще).

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

Разница между внутренним хранилищем, внешним хранилищем (также основным внешним хранилищем) и вторичным внешним хранилищем?

Внутреннее хранилище: это хранилище, недоступное для пользователя, за исключением установленных приложений (или путем укоренения их устройства). Пример: data / data / app_packageName

Внешнее хранилище имеет два типа:

Первичное внешнее хранилище: встроенное разделяемое хранилище, которое «доступно пользователю, подключив USB-кабель и устанавливая его как диск на главном компьютере». Пример: Когда мы говорим Nexus 5 32 ГБ.

Вторичное внешнее хранилище: съемное хранилище. Пример: SD-карта.

Из документов разработчика

Все Android-устройства имеют две области хранения файлов: «внутреннее» и «внешнее» хранилище. Эти имена приходят с первых дней Android, когда большинство устройств предлагают встроенную энергонезависимую память (внутреннее хранилище), а также съемный носитель данных, такой как микро SD-карта (внешнее хранилище). Некоторые устройства делят постоянное хранилище на «внутренние» и «внешние» разделы, поэтому даже без съемного носителя данных всегда есть два пространства для хранения, а поведение API одинаково, независимо от того, является ли внешнее хранилище съемным или нет.

Терминология внутреннего и внешнего хранилища в соответствии с документами Google / официального Android отличается от того, что мы думаем.

Согласно официальным документам Android: –

Внутреннее хранилище . По умолчанию файлы, сохраненные во внутреннем хранилище, являются приватными для вашего приложения, а другие приложения не могут получить к ним доступ. Когда пользователь удаляет ваше приложение, эти файлы удаляются / удаляются. Пользователь вашего приложения также не может получить к ним доступ с помощью диспетчера файлов; Даже после включения опции «показать скрытые файлы» в файловом менеджере. Чтобы получить доступ к файлам во внутреннем хранилище, вам необходимо укрепить свой телефон Android. Таким образом, это НЕ то, что мы считаем внутренней памятью телефона – 32 ГБ внутренней памяти Nexus 5.

Внешнее хранилище:

Это может быть съемный носитель (например, SD-карта) или внутреннее (несъемное) хранилище

Это означает, что оба типа хранения, такие как внутренняя память 64 ГБ Nexus 6P и съемная карта microSD, которые мы вставляем в слот для карты телефона, считаются внешними.

Съемное хранилище означает просто хранение памяти microSD, а не внутреннюю память.

Чтобы сохранить файлы приложений на SD-карте, вы можете использовать метод File[] getExternalFilesDirs (String type) в классе Context . Как правило, вторым возвращенным путем будет путь хранения для карты microSD (если есть).

Если вы хотите узнать больше о разнице терминологии, классах и методах сохранения файлов во внутреннем и внешнем хранилищах, пути хранения, я написал длинную запись в документации по стеке, с ясным объяснением. Вы можете просмотреть его здесь: Внутреннее и внешнее хранилище в Android – Уточнение терминологии

Примечание. Я отредактировал – сделал мой ответ более полезным после комментария @ Tunaki.

Я думаю, что в операционной системе он определяет внешнее хранилище как что-либо, не относящееся к фактической файловой структуре ОС. Если вы помните, когда вы пишете «внутреннее хранилище», Android будет делать папку конфиденциально для вашего приложения. Таким образом, в основном, если это скрытая папка какого-то рода, это означает, что внешнее хранилище может квалифицироваться как что-либо, что не будет автоматически скрыто или управляться непосредственно ОС. Таким образом, это означало бы, что разработчик телефона будет определять определение внутреннего хранилища, поскольку они могут иметь 1 основную часть внутренней флеш-памяти с двумя разделами на ней. Один раздел предназначался для хранения os, а другой предназначен для того, чтобы вы могли хранить все на телефоне.

В основном я говорю: это больше связано с оборудованием, и что понятие «внешнее хранилище» может распространяться даже на дополнительное внутреннее хранилище (флэш-память), которое добавил производитель. Вы даже можете рассмотреть варианты хранения, определенные Пользователь как внешнее хранилище.

Intereting Posts
Android разблокировать экран намерения? Как нажимать физические кнопки андроида программно Поддерживает ли Android API 20 устройства, поддерживающие Bluetooth LE, в качестве периферийного устройства? Как заставить веб-страницу ВСЕГДА отображать с соотношением пикселей 1,0 (не 1,5) на iPhone и Androids? Gradle: Как исключить пакет javax.realtime из Jarc jar dependency (Определить несколько dex) AWS-устройство с эспрессо и JUnit4 НЕОПРЕДЕЛЕННОЕ ТОП-УРОВЕННОЕ ИСКЛЮЧЕНИЕ: com.android.dex.DexException: несколько файлов dex определяют Почему мы не можем использовать массивы вместо varargs? Плюсы и минусы для Haxe и Kivy Активность PopUp начинается снова, когда она запускается из "последних приложений" Как загрузить локальную страницу html с помощью намерения в Android? Как использовать графические элементы по умолчанию для Android Печать имени перечисления Что означает эта линия? LOCAL_EXPORT_C_INCLUDES Android 4.4: Низкая энергия Bluetooth; Подключить без сканирования для устройства BLE