Получение пути к карте памяти SD Card на Android. Есть ли способ эмулятора попробовать новый API

Разрабатывая приложение для проведения соревнований, я столкнулся с проблемой хранения базы данных. Проблема состояла в том, как мне определить внешнюю карту памяти. В целом поиск в сети точного ответа не дал. Поэтому, объединив все найденные результаты, я собрал свой класс. Если кому интересно, смотрим под катом.

Итак, начнем с теории.

Терминология

Гугл нам говорит, что есть следующие понятия:
  1. Внутренняя (internal ) память - это часть встроенной в телефон карты памяти. При ее использовании по умолчанию папка приложения защищена от доступа других приложений (Using the Internal Storage).
  2. Внешняя (external ) память - это общее «внешнее хранилище», т.е. это может быть как часть встроенной памяти, так и удаляемое устройство. Обычно это часть встроенной памяти, как удаляемое устройство я видел в последний раз на андройде 2.2, где встроенная память была около 2Гб, и подключаемая память становилась внешней (Using the External Storage).
  3. Удаляемая (removable ) память - все хранилища, которые могут быть удалены из устройства без «хирургических» вмешательств.

До версии KitKat 4.4 API не предоставляло функционала для получения путей к внешней памяти. Начиная с этой версии (API 19) появилась функция public abstract File getExternalFilesDirs (String type), которая возвращает массив строк с путями к внутренней и внешней памяти. Но как же быть с нашей SD Card, которая вставлена в слот? Путь к ней мы опять не можем получить.

Результаты поиска

Чтобы ответить на поставленный вопрос я обратился к всезнающему гуглу. Но и он мне не дал четкого ответа. Было рассмотрено множество вариантов определения от использования стандартных функций, которые ведут к внешней памяти, но ничего общего с удаляемыми устройствами хранения данных они не имеют, до обработки правил монтирования устройств (Android же на ядре Linux работает). В последних случаях были использованы «зашитые» пути к папке с примонтироваными устройствами (в различных версиях эта директория разная). Не стоит забывать, что от версии к версии правила монтирования меняются.

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

Описание кода

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

Public enum MountDeviceType { EXTERNAL_SD_CARD, REMOVABLE_SD_CARD }
И был создан класс StorageHelper , который и осуществляет поиск доступных карт памяти.

В классе StorageHelper реализовано два способа поиска - через системное окружение (Environment ) и с использованием утилиты Linux mount , а точнее результата ее выполнения.

Способ первый - Environment
При работе с окружением я использую стандартную функцию getExternalStorageDirectory() для получения информации о внешней памяти. Чтобы получить информацию о удаляемой памяти, я использую переменную окружения "SECONDARY_STORAGE ".

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

Функция fillDevicesEnvirement

String path = android.os.Environment.getExternalStorageDirectory() .getAbsolutePath(); if (!path.trim().isEmpty() && android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED)) { testAndAdd(path, MountDeviceType.EXTERNAL_SD_CARD); } // Получаем ремувабл String rawSecondaryStoragesStr = System.getenv("SECONDARY_STORAGE"); if (rawSecondaryStoragesStr != null && !rawSecondaryStoragesStr.isEmpty()) { // All Secondary SD-CARDs splited into array final String rawSecondaryStorages = rawSecondaryStoragesStr .split(File.pathSeparator); for (String rawSecondaryStorage: rawSecondaryStorages) { testAndAdd(rawSecondaryStorage, MountDeviceType.REMOVABLE_SD_CARD); } }


Вариант решения взят со stackoverflow . Ответ где-то там внизу.
Способ второй - mount
Так как у меня долго не получалось заставить систему мне сказать путь к удаляемой памяти, я решил искать в сторону примонтированных устройств. В системе есть файлы конфигурации, в которых описаны правила монтирования внешних устройств. Все бы хорошо, но на Android версии 4.* к этому файлу простым смертным доступа нет, поэтому рассматривать этот способ не буду.

Вернемся к утилите mount. При запуске без параметров команда возвращает список смонтированных файловых систем. Удаляемые устройства имеют обычно формат файловой системы FAT, то будем выделять строки, в которых есть характеристика "fat ". Внешняя память будет характеризоваться параметром "fuse ".

Примечание: при использовании такого способа не всегда корректно (скорее всего я что-то не учел) определяются типы смотнтированных устройств. Разницу замечал на разных версиях Android. Поэтому этот способ можно использовать как дополнительный.

Функция fillDevicesProcess

try { Runtime runtime = Runtime.getRuntime(); proc = runtime.exec("mount"); try { is = proc.getInputStream(); isr = new InputStreamReader(is); br = new BufferedReader(isr); while ((line = br.readLine()) != null) { if (line.contains("secure")) continue; if (line.contains("asec")) continue; if (line.contains("fat")) {// TF card String columns = line.split(" "); if (columns != null && columns.length > 1) { testAndAdd(columns, MountDeviceType.REMOVABLE_SD_CARD); } } else if (line.contains("fuse")) {// internal(External) // storage String columns = line.split(" "); if (columns != null && columns.length > 1) { // mount = mount.concat(columns + "\n"); testAndAdd(columns, MountDeviceType.EXTERNAL_SD_CARD); } } } } finally { ... } } catch (Exception e) { ... }

Исходный код всего класса расположен еще нигде не расположен. На днях постараюсь разместить на gitHub.

Кто еще какими способами пользуется?

Теги:

  • android
  • разработка под android
  • sd card
Добавить метки

Попытка сохранить новую информацию на микро cd закончится неудачей, если на нем стоит защита от записи. Причины появления сообщения об отказе доступа могут быть разные. Снять защиту с microSD можно несколькими методами – программными и физическими. Рассмотрим самые актуальные.

Разблокирование microSD

Расположите карту памяти на плоской поверхности или на ладони так, чтобы этикетка была сверху. Слевой стороны корпуса карты вверху найдите маленький рычажок переключения блокировки - кнопка Lock. «Локер» служит для защиты информации от случайного стирания. Рычажок может быть плоским и лишь слегка выступать из корпуса, быть белого или серебристого цвета. Такой переключатель отсутствует непосредственно на microSD. Вставьте карту в адаптер и найдите переключатель Lock на самом адаптере. Передвиньте его до упора в противоположном направлении.

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

Избежать автоматической блокировки записи на microSD можно удалив ее контакт с кнопкой Lock на корпусе адаптера. На левом боку микро-флешки найдите небольшую выемку, запаяйте ее пластмассой или заклейте скотчем. Выполнять пайку надо очень аккуратно. Вариант со скотчем проще, но он может цепляться при вводе карты в адаптер.

Изменение свойств диска

Если защита карты памяти не позволяет скопировать информацию на другой диск, а сохранить ее необходимо, то попробуйте снять защиту следующим образом. Присоедините микро cd к компьютеру, найдите его имя в списке устройств и кликните по нему правой кнопкой мыши. В меню выберите строку «Свойства», затем вкладку «Доступ». В следующем окне есть «Расширенная настройка», откройте ее и поставьте галочку в строке «Открыть общий доступ», подтвердите настройки – «Ок».

Форматирование карты памяти microSD

Иногда для снятия защиты с карты памяти рекомендуется ее форматирование, если «локер» отсутствует или не помог. Важную информацию сохраните на другой диск, т.к. она будет полностью удалена. Программным способом можно снять блокировку от записи на карту при помощи Windows.

Установите карту памяти microSD на персональный компьютер через специальный адаптер напрямую или через картридер. На современных ноутбуках такой разъем уже предусмотрен, он обычно обозначен значком «карта» и выглядит как узкая щель. Операционная система распознает диск, и его имя отобразится в списке устройств компьютера.

Кликните правой кнопкой мыши на значке диска CD и в развернутом меню выберите строку «Форматировать …». Файловую систему поставьте ту, которую поддерживает ваше устройство, обычно - NTFS. Нажмите «Начать». Вся информация с диска теперь удалена, и статус защиты снят.


Изменение файловой системы

При записи на карту памяти файла объемом более 4 Гб окошко с уведомлением об ошибке может возникнуть из-за ограничений файловой системы. Если карта памяти отформатирована с системой FAT32, то размер файла входит в число ее ограничений для записи данных. Следует изменить файловую систему на NTFS, так как описано в 3 пункте.


Программные средства для microSD

Сбросить защиту от записи на диске можно программными средствами, не удаляя информацию. Для этого существуют различные скрипты и утилиты, например - reset.zip. Скачивая программное обеспечение из сети, следует быть осторожными – оно может содержать вирусы. Лучше воспользоваться для снятия защиты проверенными приложениями. Низкоуровневое форматирование диска утилитой Hard Disk Low Level Format Tool стирает все данные, но поможет восстановить даже безнадежные флешки, которые не прошли форматирование внутренними средствами Windows.


Снятие защиты microSD через мобильное устройство

Современные мобильные девайсы: плееры, КПК, телефоны, фотоаппараты обладают функцией форматирования microSD. Попробуйте через настройки найти эту опцию и отформатировать флешку прямо на данном устройстве . Защита памяти могла быть программно установлена в аппарате для обеспечения конфиденциальности данных. Снять защиту можно также в настройках. Все разновидности электронных устройств имеют свои особенности, поэтому в случае затруднений ознакомьтесь с инструкцией гаджета или получите разъяснение в сервисном центре у специалиста.


Физические повреждения карты памяти microSD

Один из вариантов сбоя при попытке записи данных на карту памяти возникает из-за физических повреждений: карта слегка погнута, загрязнен один из контактов на карте (чаще левый) или на адаптере, и microSD именно его замыкает. В случае загрязнения контактов их надо почистить, например, ватной палочкой, смоченной в спиртосодержащей жидкости или ацетоне. Сильно погнутая карта восстановлению не подлежит. Слегка изогнутую можно попытаться выпрямить, положив под пресс.


Используйте с картой microSD только «родной» адаптер. С другим адаптером, даже если удалось провести форматирование на телефоне, записать информацию на диск, скорее всего не получится.

Инструкция

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

После этого вставьте карт-ридер с картой памяти внутри в USB- порт компьютера. При правильном подключении должен загореться индикатор. Компьютер издаст характерный звук, на экране появится «Мастер настройки нового оборудования». Пропустите этот момент, нажав «нет, не сейчас» и ждите надписи «далее». Таким образом, ПК готов к работе с картой памяти .

Перейдите в «Мой компьютер» и кроме жестких дисков C ,D и E, отвечающего за DVD-дисковод, вы заметите еще один, к примеру, G или Н. Это и будет карта памяти , подключенная к компьютеру. Нажмите на нее. Перед вами предстанет весь перечень файлов. Если нужно, можете оставить его без изменений или удалить какую-либо информацию для освобождения места.

Откройте еще одно окно «Мой компьютер» и зайдите в тот отдел жесткого диска, где находится интересующая вас музыка. Выделите мышкой необходимые папки или отдельные треки и перенесите их в окно, где открыт съемный диск, т.е. карта памяти . Пойдет процесс копирования.

Когда нужный объем музыки перенесен, найдите с правой стороны панели задач значок «Безопасное извлечение устройства». Нажмите на него и выберете пункт «Остановить», после чего появится надпись «Оборудование может быть удалено», и извлеките карт-ридер с флешкой из порта компьютера.

Если возможности вашего сотового телефона позволяют воспроизводить музыку и видео, то такой аппарат без труда можно использовать в качестве карманного медиаплеера. Для этого нужно поместить в мобильный множество различных мелодий и видеороликов. Обычно для загрузки таких файлов используют дополнительную карту памяти, так как часто в самом устройстве недостаточно места для хранения большого количества информации. Записать карту памяти для телефона можно с помощью нескольких несложных действий.

Вам понадобится

  • - сотовый телефон
  • - карта памяти
  • - картридер
  • - компьютер

Инструкция

Сначала запишите музыкальные композиции и видео, которые вы хотите записать на телефон, на жесткий диск компьютера. Поместите все медиафайлы в одну папку.

Если ваш мобильный телефон при подключении к компьютеру может работать в режиме накопителя, то вставьте подходящую карту памяти в соответствующий разъем аппарата. Затем подключите сотовый к ПК с помощью USB-шнура или Bluetooth-соединения.

В информационном окне, появившемся на экране мобильного телефона, выберите режим «Накопитель». Затем на ПК откройте диск C и найдите папку, где размещены необходимые медиафайлы.

Войдя в папку, выделите музыкальные файлы и нажмите правую клавишу мыши. В появившемся списке выберите «Копировать».

Потом нажмите кнопку «Пуск», расположенную в левом нижнем углу компьютера, и в появившемся окне выберите раздел «Мой компьютер». Найдите в этой категории новый съемный диск.

После того, как необходимые файлы будут полностью помещены на карту памяти, отключите устройство от ПК. Для этого в правом нижнем углу экрана нажмите на значок «Безопасное извлечение устройств и дисков».

Если по каким-то причинам подключить ваш телефон к компьютеру невозможно, то подключите к ПК картридер, подходящий для вашей карты памяти. Затем вставьте карту в соответствующий разъем устройства и откройте на ПК раздел «Мой компьютер».

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

Источники:

  • Как выбрать в 2017

На сегодняшний день MP3 является самым распространенным и популярным форматом музыки. Он используется везде: в мобильных телефонах , компьютерах, плеерах. Для стандартизации и конвертации всей музыки в формат MP3 записываются музыкальные диски, ведь MP3 позволяет записать намного больше музыки, чем классический CDA.

Инструкция

Запись MP3 может производиться как с носителя – музыкального диска, так и на носитель – чистый CD/DVD-диск. Сначала рассмотрим первый вариант:
У вас есть музыкальный диск с несколькими треками, обычно, это один альбом. Вставьте диск в CD-ROM и запустите Windows Media Player. WMP является стандартным проигрывателем, поставляемым с Windows. Почти сразу же, после анализа диска, WMP предложит вам записать музыку на жесткий диск.
Справа появится треклист диска, и вкладки, среди которых будет вкладка «Запись». Нажмите на нее и чуть ниже, в самом правом боку экрана, вы увидите небольшой ярлык в виде окошка с галочкой. Выберите его левой кнопкой мыши и в появившемся контекстном меню выберите «Дополнительные параметры записи».
В открывшемся окне «Параметры» перейдите на вкладку «Копирование музыки с компакт-диска». В подразделе «Настройка копирования с компакт-диска» выберите

Современные мобильные устройства и фотоаппараты помимо основной памяти небольшого объема могут комплектоваться картой памяти, объем которой может в разы превышать объем основной памяти. Для неосведомленного в технике человека это в новинку, что порождает массу вопросов относительно использования карты памяти. Карты памяти бывают разных размеров, но технология работы у них одинаковая. Так что все советы, которые будут указаны далее, подойдут для любой вида устройства.

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

Поэтому следующий вопрос касается того, как вытащить карту памяти. Устройства, поддерживающие карты памяти, используют держатели с пружинкой. На корпусе телефона или фотоаппарата имеется гнездо для карты памяти, как правило, закрытое резиновой или пластиковой крышкой. Для извлечения нужно открыть его и легонько нажать на карту до щелчка. После этого она выйдет из гнезда и ее можно вытащить пальцами. Из картридера схема извлечения такая же. Если нужно вставить карту обратно, необходимо вдавить ее в гнездо до щелчка.

Кроме того, часто возникают трудности, связанные с тем, как очистить карту памяти. Если нужно ее очистить не полностью, то необходимо зайти на нее и удалить ненужные файлы по одному. Если требуется полная очистка, то нужно провести ее форматирование. Для этого необходимо нажать правой кнопкой мыши на устройстве и выбрать пункт Форматирование. В появившемся окне нужно выбрать необходимые настройки и нажать кнопку Начать, с последующим подтверждением операции. Кроме того, все эти действия доступны непосредственно с устройства, которому соответствует карта памяти.

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

Часто пользователи забывают пароли и возникают вопросы относительно того, как снять пароль карты памяти. Если это смартфон, то нужно зайти в системные файлы и найти там файл с названием mmccstore. Этот файл нужно переименовать с разрешением txt и открыть его. Среди различных непонятных символов будут проскакивать арабские цифры. Их комбинация и будет паролем. Второй способ заключается в простом форматировании карты памяти, в результате чего удалится и пароль. Второй способ легче, но пригоден лишь в том случае, если информация на карте не важна.

Давайте поговорим о том, как снять защиту записи с SD-карты памяти на Android. Многие люди сталкиваются с этой проблемой, когда пытаются скопировать или переместить файлы на SD карту. В этой статье вы найдете несколько способов как снять защиту записи Android.

Как снять защиту записи с SD-карты Android

Если при попытке скопировать файлы или форматировать SD-карту вы получаете ошибку, как на изображении выше, тогда знайте, это не ваша проблема. Более того, карта памяти не повреждена и не заражена вирусом, просто на ней установлена защита от записи. Без лишней суматохи мы рассмотрим несколько методов как снять защиту записи Android.

Как снять защиту записи Android c SD-карты с помощью Regedit

Большинство проблем и ошибок легко решаются с помощью реестра. Также мы можем использовать его, чтобы снять защиту записи Android.


Этот способ помогает в большинстве случае, но, если по какой-либо причине вы не можете его использовать, тогда попробуйте следующие методы.

Как снять защиту записи Android c SD-карты с помощью Diskpart

  1. Вставьте SD-карту памяти в компьютер и запустите командую строку. Вы можете сделать это, нажав клавишу WIN+R и написав «CMD», или просто ввести «Командная строка» в меню Пуска.
  2. В окне командной строки вы должны ввести следующие команды по порядку.

  • diskpart
  • list disk
  • select disk x (где Х – это номер вашей SD карты)
  • attributes disk clear readonly
  • clean
  • create partition primary
  • format fs=fat32

Если и этот способ не помог снять защиту записи Android, не отчаивайтесь, у нас есть еще парочка решений этой проблемы.

Изменить разрешение

  1. Вставьте SD карту памяти в компьютер. Щелкните правой кнопкой мыши на карту памяти и выберите Свойства. Затем во вкладке Безопасность вы найдете имя вашей учетной записи.
  2. Измените разрешение для SD-карты на «Чтение/запись», «Чтение/Выполнение» или «Полный контроль».

Этот способ позволит снять защиту записи Android.

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

Надеемся, вам удалось снять защиту записи Android. Если у вас остались вопросы, пожалуйста, напишите в комментариях ниже.