, который содержит в себе путь к устройству, тип устройства и некий хэш.
Типов устройств выделено два (внутреннюю память я не стал трогать, так как к ней доступ можно получить через API системы).
public enum MountDeviceType
И был создан класс
, который и осуществляет поиск доступных карт памяти.
В классе StorageHelper реализовано два способа поиска — через системное окружение (Environment) и с использованием утилиты Linux mount, а точнее результата ее выполнения.
Microsd не отформатирована (или почему появляется ошибка “невозможно подключить sd”)
Разновидностей подобной ошибки достаточно много (зависит от версии Андроид, да и самой марки телефона (одна из версий показана на скрине ниже)).
Чаще всего ошибка появляется из-за того, что:
- SD карта отформатирована в какую-нибудь незнакомую для Андроида файловую систему (например, NTFS. Компьютер-то такую карту увидит, а вот телефон – скорее всего нет*);
- если размер SD карты больше 32 ГБ, то вероятнее всего она отформатирована в exFAT (по крайней мере многие SD карты идут по умолчанию с ним). Не все смартфоны поддерживают эту файловую систему;
- файловая система была просто повреждена. Если такую карту памяти подключить к компьютеру – то в свойствах вы увидите на FAT 32 (например), а RAW.
Чтобы исправить подобные проблемы, достаточно отформатировать SD карту в FAT 32 (* кроме тех случаев, когда карта памяти несовместима с аппаратом; об этом чуть ниже в статье).
Как включить карту памяти в телефоне: инструкция для Xiaomi и Samsung
Sd не поддерживается телефоном или планшетом
Не все планшеты и телефоны поддерживают большие объемы памяти на внешних хранилищах. К примеру, с некоторыми моделями смартфонов Samsung работают накопители с емкостью до 64 гигабайт. Более давние китайские устройства поддерживают иногда 32 или 16 ГБ.
Современные смартфоны работают, как правило, с хранилищами до 256 гигабайт. Однако некоторые китайские модели ограничены меньшим количеством памяти.
Перед тем, как покупать дополнительное хранилище, советуем найти на характеристики своего смартфона в интернете и проверить максимальный объем памяти SD и ее тип. Информация находится на официальных сайтах разработчиков, либо в обзорах на смартфон, интернет-магазинах.
Sd-карта не работает» или «устройство sd-карта повреждено»
Самый распространенный сценарий — когда смартфон видит внешний накопитель, который владелец подключил. Но устройство не работает, записывать на него и открывать файлы не получается. В уведомлениях «висит» надпись, которая означает, что телефон не поддерживает внешний накопитель, либо она повреждена.
- «SD карта не поддерживается», либо «Проблема с накопителем», встречается ошибка преимущественно на новых версиях ОС;
- на смартфонах от концерна Samsung ошибки выглядят следующим образом: «Проблема с накопителем (Карта памяти)», «Неподдерживаемая карта памяти»;
- на более старых версиях операционной системы Андроид — «SD-карта не работает».
Существуют другие варианты. К примеру, один внешний накопитель отображается, как два, но они не работают. Или устройство не «видит» хранилище вообще.
Эти признаки не означают, что внешнее хранилище на самом деле повреждено или не поддерживается смартфоном, либо планшетом. Стоит попробовать открыть СД на компьютере через кард-ридер или адаптер. Если Android устройство отображает такие уведомления, то самая вероятная причина — планшет или телефон не поддерживает файловую систему, либо ее вообще нет. Последнее случается после неправильного использования SD на компьютере.
Что делать в такой ситуации? Предлагаем следующие решения проблемы.
Если на внешнем накопителе есть файлы, которые не хочется удалять, то вставьте его в компьютер или ноутбук. Используйте кард-ридер или адаптер. Для последнего есть гнездо практически во всех ноутбуках. После того, как хранилище откроется на ОС Windows или Mac, перетащите нужные файлы на рабочий стол или диск и отформатируйте хранилище в файловой системе FAT32 или ExFAT.
- Зайдите в настройки.
- Найдите вкладку «Хранилище».
- Затем «SD карта».
В телефонах Samsung директория такая: Меню настроек — Обслуживание устройства — Память — Карта памяти SD.
Если на хранилище нет важной информации — используйте функции операционной системы Андроид. Форматировать можно следующим образом: нажмите на уведомление, в котором написано, что КП работает некорректно или откройте настройки, перейдите во вкладку «Хранилище и USB накопители», далее в «Съемный накопитель». Нажмите на кнопку «SD карта» и отформатируйте ее, выбрав подходящий вариант.
Больше про Хуавей: Игра на планшет: Майнкрафт, его установка и возможные проблемы
Если после форматирования на компьютере проблема не решилась, либо Андроид не может отформатировать КП, то проблема связана не с файловой системой.
Обратите внимание, что уведомления о неисправности карточки или о том, что она не может прочитаться, а также СД не открывается на компьютере или ноутбуке, свидетельствуют также об использовании хранилища в качестве внутренней памяти на других смартфонах или планшетах. В таких случаях с 99-процентной вероятностью помогает форматирование.
Дополнительные советы
Если ни один из советов не решил проблему, и система не видит хранилище вообще или появляется уведомление о неполадке, то попробуйте следующие советы:
Другие причины
Существуют более редкие случаи, когда Android устройство не «видит» внешнее хранилище.
Если данные нужны и карта памяти работает
Тут есть важный момент, как изначально была отформатирована карточка — как съёмный накопитель для переноса данных или для внутреннего использования как дополнительная память телефона.
Раньше, когда в Android не использовалось шифрование по умолчанию, рабочие флешки можно было сканировать программами для восстановления данных.
Однако сейчас, когда шифрование применяется уже в каждом телефоне, при форматировании microSD в большинстве случаев информация тоже шифруется (зависит от производителя телефона). И в результате на компьютере восстановить самостоятельно ничего не получится, так как ключ шифрования — в смартфоне.
Если вы не знаете, есть у вас шифрование или нет, просто попробуйте любую программу для восстановления данных. Если карта памяти зашифрована — на ней ничего не найдётся.
Если же карточка использовалась как дополнительная память, то она будет зашифрованной. В таком случае в домашних условиях ничего сделать не получится, так как потребуется специализированное ПО. Оно есть у органов (МВД, ФСБ) и у некоторых компаний, которые занимаются восстановлением данных. Но стоит это недёшево.
Если данные нужны, а карта памяти не работает
В тех случаях, когда карта памяти неисправна, к ней нужно припаиваться, считывать программатором и разбирать получившийся образ, так как данные там не лежат в явном виде, а разбросаны по определённому алгоритму.
Для всех этих манипуляций тоже требуется специализированное оборудование и ПО, а иногда даже рентген – чтобы выяснить, к каким именно контактам подсоединяться.
Если данные с карты не нужны
В этом случае вам достаточно просто отформатировать карту через настройки и продолжать использовать её.
Если карта уже не видна в настройках, то её нужно извлечь из телефона и протестировать на компьютере через картридер. Для этого можно использовать любые программы проверки дисков на бэд-блоки — например, HDD Scan (режим «чтение»).
Если же карта содержит нечитаемые ячейки или не определяется вообще, то она считается непригодной к эксплуатации. Остаётся либо выбросить её, либо вернуть по гарантии.
Как отформатировать карту памяти в fat32
Способ 1 (в Windows)
1) Подключить SD карту к ПК и зайти в “Этот компьютер”. (можно нажать сочетание Win E, и после того, как откроется проводник – выбрать в левом меню оное, см. пример ниже)
2) Далее на SD карте нажать правой кнопкой мышки и в появившемся контекстном меню выбрать “Форматировать…”.
3) В следующем шаге указать файловую систему FAT32 и нажать на “Начать”.
Важно! Форматирование уничтожит все данные на накопителе.
4) Если все прошло корректно – появится сообщение о том, что форматирование было завершено. Можно вынуть microSD и подключить к телефону.
Способ 2 (через спец. утилиты)
Если средствами Windows отформатировать не получилось (например, ОС может начать зависать при обращении к накопителю) – рекомендую попробовать спец. утилиты. Скажем, JetFlash Recovery Tool или SD Formatter способны отформатировать даже сбойные и плохо-работающие SD карты. Рекомендую попробовать (ссылку на них привожу ниже).
Как проверить карту памяти (microsd) на компьютере (для справки)
1) Вставить microSD в SD адаптер (прим.: идет часто в комплекте при покупке) и подключить его к компьютеру. Обратите внимание, что microSD нужно вставить в адаптер до упора (многие это не делают, и поэтому карта не читается на ПК).
Больше про Хуавей: Что делать если тормозит интернет на Андроид: причины слабой скорости
Как разрешить проводнику доступ к sd-карте? – miui общее – xiaomi community – xiaomi
Настоящим вы соглашаетесь с тем, что Xiaomi может собирать, обрабатывать и использовать вашу личную информацию и элементы, включая, помимо прочего, темы, изображения, комментарии, ответы в Xiaomi Community, а также соответствующие данные, перечисленные в Политике конфиденциальности Xiaomi. Выбирая “Принять”, вы соглашаетесь с
Политикой в отношении контента
Карта памяти была повреждена
Чаще всего, карта памяти приходит в негодность из-за механических повреждений (например, многие кладут карту в карман, а потом, неудачно присаживаются или поворачиваются
Вообще, для начала обратите внимание на внешний вид карты: совсем не обязательно, что она будет сломана наполовину (как на фото выше). Нередки случаи, когда у карты “отколот” лишь небольшой краешек…
Когда, вообще, можно говорить о том, что SD карта повреждена* (при усл., что на ней нет видимых следов):
- вы подключали ее к 2-3 разным устройствам (ПК, телефон, ноутбук) и ни одно из них ее не распознало (не увидело);
- почистили медные контакты спиртовой салфеткой, но это также не дало результатов;
- попробовали отформатировать ее на ПК спец. утилитами (которые в ряде случаев “видят” даже те флешки/SD карты, которые не отображает Windows);
- крайне желательно также поверить офиц. сайт производителя вашей SD карты (на нем могут быть спец. утилиты для восстановления).
Несовместимость карты памяти с телефоном
Карты памяти отличаются друг от друга не только размером и производителем, но и типом, классом (скоростью работы). В качестве наглядной иллюстрации привожу фото упаковки от одного известного производителя: обратите внимание на маркировку SDXC.
Собственно, зная какого типа ваша карта можно легко узнать сможет ли работать с ней телефон: достаточно открыть спецификацию к аппарату (должна идти в комплекте к новому устройству, либо можно воспользоваться интернетом. Иногда эту информацию можно найти на упаковке).
Кстати, относительно-старые телефоны могут поддерживать карты памяти далеко не всех объемов. Обратите внимание на фото упаковки одного бюджетного телефона Samsung. Этот момент также следует уточнить…
Пример использования
/* Получаем базовый путь */ if (!mPreferences.contains(PREFS_BASEBATH)) < // Если еще не сохранялся в настройках, то пытаемся найти карты // памяти ArrayListstorages = StorageHelper.getInstance() .getRemovableMountedDevices(); // проверяем съемные карты памяти if (storages.size() != 0) < setBasePath(storages.get(0).getPath() mAppPath); >else if ((storages = StorageHelper.getInstance() // Проверяем // внутреннюю // память .getExternalMountedDevices()).size() != 0) < setBasePath(storages.get(0).getPath() mAppPath); >> else < // Вытаскиваем из сохранненых настроек mBasePath = mPreferences.getString(PREFS_BASEBATH, context .getFilesDir().getParent()); >
Про дублирование
Многие замечали в директории монтирования устройств такую картину:
/storage/sdcard0/ /storage/emulated/0/ /storage/emulated/legacy/
И что самое интересно, все это одна и та же внешняя карта памяти. Такое дробление начинается с версии Jelly Bean и сделано это для поддержки многопользовательского режима работы системы. Более подробно
. И вот, чтобы не получать одну и туже карту памяти как различные устройства, необходим способ определения идентичности. Если бы был доступ к конфигурации монтирования, то и вопросов не было. Но доступа нет. Поэтому я
подсмотрел решение с расчетом хэша для каждого устройства:
- создаем StringBuilder
- записываем в него общий размер устройства и размер используемого пространства устройства
- обходим содержимое корня устройства
- записываем имя каталога
- записываем имя файла и размер
- вычисляем hash
Программная ошибка
Пожалуй, начать статью следует с самого очевидного… Нередко в виду различных программных сбоев некоторые приложения могут неправильно начать определять карту памяти (и соответственно работать с ней не получится. Кстати, при этом может так стать, что в настройках Андроид она вообще не будет отображаться).
Первое, что следует сделать в этом случае – просто перезагрузить смартфон (примечание: для этого достаточно зажать кнопку включения на 3-5 сек., пока не появится соответствующее меню, пример ниже).
Для принудительной перезагрузки устройства (например, из-за “мертвого” зависания) – необходимо зажать кнопку включения на 10 сек…
Кстати, если телефон после подключения карты памяти начинает зависать (тормозить, и вести себя не естественно) – велик риск, что карта памяти пришла в негодность (т.е. он ее видит, пытается с ней работать, но она “не отвечает”…). В этом случае, попробуйте вынуть SD карту и подключить ее к ПК (для более детальной проверки…).
Больше про Хуавей: NFC на Huawei Honor: как подключить настроить и использовать
Результаты поиска
Чтобы ответить на поставленный вопрос я обратился к всезнающему гуглу. Но и он мне не дал четкого ответа. Было рассмотрено множество вариантов определения от использования стандартных функций, которые ведут к внешней памяти, но ничего общего с удаляемыми устройствами хранения данных они не имеют, до обработки правил монтирования устройств (Android же на ядре Linux работает).
В конечном итоге я решил объединить все полученные знания и написал свой класс, который может нам вернуть пути к внешним и удаляемым устройствам.
Способ второй — mount
Так как у меня долго не получалось заставить систему мне сказать путь к удаляемой памяти, я решил искать в сторону примонтированных устройств. В системе есть файлы конфигурации, в которых описаны правила монтирования внешних устройств. Все бы хорошо, но на Android версии 4.* к этому файлу простым смертным доступа нет, поэтому рассматривать этот способ не буду.
Вернемся к утилите mount. При запуске без параметров команда возвращает список смонтированных файловых систем. Удаляемые устройства имеют обычно формат файловой системы FAT, то будем выделять строки, в которых есть характеристика “fat”. Внешняя память будет характеризоваться параметром “fuse”.
Примечание: при использовании такого способа не всегда корректно (скорее всего я что-то не учел) определяются типы смотнтированных устройств. Разницу замечал на разных версиях Android. Поэтому этот способ можно использовать как дополнительный.
Вариант решения взят со stackoverflow. Ответов там несколько примерно одинаковых.
Способ первый — environment
При работе с окружением я использую стандартную функцию getExternalStorageDirectory() для получения информации о внешней памяти. Чтобы получить информацию о удаляемой памяти, я использую переменную окружения ”
Внешняя память всегда одна и обычно всегда есть, поэтому проверяем ее на читаемость, вычисляем хэш и запоминаем. Удаляемой памяти может быть много, поэтому необходимо полученную строку разбить по разделителю и проверять каждое значение.
Вариант решения взят со
. Ответ где-то там внизу.
Терминология
Гугл нам говорит, что есть следующие понятия:
- Внутренняя ( internal ) память — это часть встроенной в телефон карты памяти. При ее использовании по умолчанию папка приложения защищена от доступа других приложений ( Using the Internal Storage ).
- Внешняя ( external ) память — это общее «внешнее хранилище», т.е. это может быть как часть встроенной памяти, так и удаляемое устройство. Обычно это часть встроенной памяти, как удаляемое устройство я видел в последний раз на андройде 2.2, где встроенная память была около 2Гб, и подключаемая память становилась внешней ( Using the External Storage ).
- Удаляемая ( removable ) память — все хранилища, которые могут быть удалены из устройства без «хирургических» вмешательств.
До версии KitKat 4.4 API не предоставляло функционала для получения путей к внешней памяти. Начиная с этой версии (API 19) появилась функция public abstract File[] getExternalFilesDirs (String type), которая возвращает массив строк с путями к внутренней и внешней памяти. Но как же быть с нашей SD Card, которая вставлена в слот? Путь к ней мы опять не можем получить.
Заключение
Подробные рассуждения по этому вопросу понимания памяти в Android, некоторые советы можно прочитать
Исходный код всего класса расположен еще нигде не расположен. На днях постараюсь разместить на gitHub.
Кто еще какими способами пользуется?
UPD1: Исходный код класса на bitbucket
Источник: huaweidevices.ru
Настройка карты памяти в Android
В «чистом» Android 10 процесс первичного конфигурирования карты памяти выглядит следующим образом:
Внимание! Выполнение дальнейшей инструкции предполагает форматирование SD-карты, поэтому перед началом процедуры убедитесь, что на ней нет важных или ценных данных!
-
После установки карточки в шторке устройства появится уведомление с предложением её настроить, тапните по нему.


После процесса форматирования получите сообщение о том, что устройство готово к работе.
Этап 2: Настройка для загрузки файлов
Если вы выбрали режим работы SD-карты как съёмного носителя, наверняка вам будет интересно, можно ли настроить её на загрузку файлов. Такая возможность доступна, однако проделывать её нужно для каждого приложения из тех, которые предполагают использование карты памяти. В качестве примера воспользуемся Google Chrome.
- Запустите Хром, после чего нажмите на кнопку с 3 точками для вызова меню, в котором выберите пункт «Настройки».
- Перейдите к разделу «Скачанные файлы».


Решение некоторых проблем
В процессе настройки или использования карты памяти в Android могут возникнуть те или иные сбои. Рассмотрим самые распространённые.
Устройство не распознаёт вставленную SD
Самая частая проблема – карту вставили, а телефон или планшет её не видят. Существует множество решений, которые описаны в отдельном материале по ссылке далее.
Появляется сообщение «SD-карта повреждена»
Второй вероятный сбой – вместо уведомления о настройке пользователь получает сообщение о том, что внешний накопитель повреждён. Это довольно серьёзная проблема, однако и её можно устранить самостоятельно.
Источник: lumpics.ru
Как подключить СД-карту и пользоваться ею на Андроиде
При выборе мобильного телефона покупатели в первую очередь задумываются о технических характеристиках устройства. Разбираться с мегапикселями, типами ОЗУ и названиями процессоров довольно проблематично неопытным новичкам. Потому чаще всего учитывается именно размер внутренней памяти. Но, по закону подлости, эта память порой заканчивается.
Проблема исправляется использованием SD-карты. Мы расскажем, как подключить СД-карту на телефоне с Андроид.
Зачем нужна карта памяти
Существование внешних устройств для хранения данных вызывает удивление у начинающих пользователей. Они уверены, что память, которая указана в технических характеристиках устройства, никак не расширяется. SD-карты разрушают это впечатление, увеличивая общий объем памяти на 4, 8, 16 и порой даже 512 ГБ (половина терабайта).
К тому же, расширение памяти – не единственное преимущество. Все SD-карты универсальны, делятся только на microSD и обычные. Следственно, если вытащить карту памяти из одного телефона, то ее легко подключить к другому либо к компьютеру (через специальный адаптер). Такая особенность позволяет использовать внешний накопитель в качестве места хранения фотографий.
Сломался телефон, а нужно достать фотографии? Не проблема, вытаскиваете накопитель и вставляете в другое устройство. Этот процесс займет не более 10 минут.
Однако у SD-карт есть и свои недостатки. Во-первых, они чаще подвержены сбоям. Иногда эти сбои решаются перезапуском, а иногда приходится форматировать внешний накопитель. Кстати, при второй ситуации лучше не стоит использовать эту же SD повторно, ибо она может снова выйти из строя. Второй недостаток – это скорость записи.
При копировании на внешний накопитель скорость записи обычно ниже. Также, если фотографии находятся на SD, то они дольше будут загружаться при открытии галереи.
Как ее подключить
- Через слот, расположенный в правой или левой части корпуса. Он извлекается с помощью ключа (обычная твердая иголка), который необходимо протолкнуть в отверстие рядом со слотом.
- Через слот под аккумулятором. Такие слоты уже не используются в современных устройствах. Потому рассматривать его не будем.
После извлечения слота необходимо поместить SD в нужный отсек. Не перепутайте с отсеками для SIM-карт (они подписаны). Обычно у карт есть угол, который показывает, как правильно вставить их. Завершающим этапом станет вставка слота обратно. Для этого ключ не нужен, достаточно протолкнуть слот обратно до щелчка.
После останется только включить устройство, если до этого оно было выключено.
Дальнейшая настройка
После включения телефона внешний накопитель сразу определится в системе. Первое, что может предложить гаджет – это отформатировать флешку для решения проблем совместимости. Учтите, что если на флешке есть данные, то они удалятся безвозвратно.
Второй этап настройки – это выбор файлов, которые будут храниться на SD. Да, вы можете вручную перемещать файлы, но этот процесс можно настроить и автоматизировать. На нашем сайте есть множество решений для оптимизации SD. Вот некоторые из них:
- Как указать SD в качестве основного места расположения для фотографий читать здесь.
- Инструкция по переносу приложений на SD.
- Слияние внутренней и внешней памяти здесь.
Выполнять эти действия не обязательно, они просто повышают пользу от карты.
Возможные проблемы
Как мы сказали выше, карты памяти капризнее внутреннего накопителя, потому с ними могут возникнуть следующие проблемы:
- Постоянные уведомления о необходимости отформатировать накопитель.
- Запрет на чтение или запись.
- Файлы куда-то исчезают.
В таком случае рекомендуем попробовать отформатировать карту либо просто выкинуть ее. Это обезопасит от потери важных данных.
Благодарим за прочтение.
Источник: it-tehnik.ru