- Использование карты памяти /sdcard/ приложениями в Android
- Нет папки obb в Андроид. Что делать
- Папка obb (sdcard/Android/obb) на андроид, для чего она нужна?
- Что делать если нет директории, папки sdcard/Android/obb?
- Как открыть карту памяти на телефоне?
- Родной проводник или Google Files Go
- Приложение ES Проводник
- Программа X-Plore
- Карта памяти не отрывается на смартфоне
- Получение пути к карте памяти SD Card на Android
- Терминология
- Результаты поиска
- Описание кода
- Пример использования
- Заключение
Использование карты памяти /sdcard/ приложениями в Android
Друзья, поклонники зеленых роботов, разработчики приложений, просто пользователи:
как Вы используете карту памяти /sdcard/ в Вашем Android-девайсе?
Рассмотрим, для начала данный вопрос на примере большинства рядовых пользователей устройства под управлением ОС Андроид:
Как и многие, я устанавливаю приложения на карту памяти — для экономии места в самом телефоне, но сами приложения, их кеши и т.д. — все это сохраняется прямо в корень карты памяти, в итоге я получаю на карте полную «кашу»:
огромное количество папок и т.д. среди которых достаточно неудобно (как через ФМ так и при подключении к ПК) искать нужные мне файлы, папки и т.д. Понятно, что можно обойтись костылями и, например, добавить мои папки в «избранное» в том же ФМ и т.д., но вопрос в другом.
Почему изначально большинство приложений устанавливаются на карту памяти так:
или, например, так:
или на худой конец — есть же скрытая системная
/sdcard/.android_secure
(понятно, что туда не всегда есть доступ и т.д., но все таки)
В итоге: что же получает юзер?
Среднестатистический юзер устанавливает достаточно много приложений и, зачастую, для экономии места, перемещает их на карту памяти. Все хорошо, но до того момента, когда нам вдруг понадобилось найти свой собственные документы на карте памяти, тут мы подключаем девайс с ПК в режиме карты памяти или же через ФМ самого смартфона заходим сюда: /sdcard/
И что же мы видим?
Да вот что:
habrastorage.org/storage1/e5deae9f/54a3c20b/8ba76329/55414a1a.jpg
Напрашивается, закономерный вопрос: почему так?
Насколько я понимаю, причины две:
1) это сама компания google, точнее ее политика в отношении это аспекта, то есть действия разработчиков программ никак тут не ограничены (тем же условием опубликования программы на market’e и т.д.)
2) разработчики программ, которые пишут софт, зачастую, создающий массу папок в корне /sdcard/
Ну и для любопытства ради воспользуемся любимым поиском:
habrahabr.ru/blogs/android_development/111868
Например тут указан некий Стандарт разработки приложений под Android
из которого четко следует:
Корневой каталог для всех файлов пользователя, кроме временных:
/sdcard/название проекта/, например /sdcard/TalentMania/
Каталог для музыки:
/sdcard/название проекта/sound/, например /sdcard/TalentMania/sound/
Каталог для MIDI:
/sdcard/название проекта/midi/, например /sdcard/TalentMania/midi/
Каталог для графики:
/sdcard/название проекта/img/, например /sdcard/TalentMania/img/
Подкаталоги для файлов различных активити:
/sdcard/название проекта/img/название активити/, например /sdcard/TalentMania/img/guitar/
И т.д.
Никаких претензий я разработчикам или вообще кому либо не предъявляю.
Просто хочу задать два вопроса:
1) Почему так? Почему все «сваливается» в корень карты памяти?
2) Одному мне это чертовски неудобно?
Спасибо за внимание!
PS: а пока юзеры выдают просто шедевральные методы облегчения использвания карты памяти:
открываешь карту памяти и создаешь
_Видео
_Документы
_Музыка
_Прочее
|-Карты
|-и т.д.
_Фото
как результат, то что мне нужно, хотя бы всегда сверху
как в телефоне
так и на ПК
Источник
Нет папки obb в Андроид. Что делать
Сегодняшняя статья на андроид тематику будет полезна любителям поиграть бесплатно в платные игры для смартфонов и планшетов. При установке платного контента могут возникать определенные трудности, например нет конфига, драйвера, нужного кодека или банально рут прав или просто нужной директории, папки. Для установки игр с кешем понадобиться папка obb в android. О ней и поговорим.
Папка obb (sdcard/Android/obb) на андроид, для чего она нужна?
Немного теории для начала, что бы вы могли понтануться перед друзьями. Данный каталог в системе служит для хранения файлов с расширением «.obb». Обычно там хранится кеш различных приложений или же игр. Существует два основных способа установки нового софта на телефон, планшет:
- Установка на прямую из Google Play. Единственное что потребуется — учетная запись Google
- Скачивание на устройство APK и всех необходимых файлов и последующая установка напрямую из смартфона;
С первым способом трудностей не возникает, со вторым дела обстоят несколько иначе. Существуют платные игры и приложения, в которые мы хотим поиграть и опробовать бесплатно. Они зачастую содержат кеш данные, например для установки на телефон GTA San Andreas необходимо скачать вместе с APK папку с кешем игры, который как раз устанавливается в папке obb. При покупке и последующей установке официального приложения папка obb создается сама. При скачивании пиратской версии телефоне изначально отсутствует папка obb, в которую нужно кидать кэш для игр.
Что делать если нет директории, папки sdcard/Android/obb?
Как догадался пытливый читатель данную папку нужно просто создать. Рекомендуем создавать ее в памяти смартфона, т.к. по умолчанию все игры и программы устанавливаются туда. Если устанавливаете утилиты на sd карте — создавайте на флешке. Первый вариант — создать папку напрямую со смартфона:
- Открываем любой файловый менеджер (на каждом аппарате есть встроенный). «Android» системная папка, по этому может быть скрыта. Если ее не видно — нажмите на кнопку контекстного меню и выберете пункт «Показать скрытые фалы и папки»;
Показать скрытые файлы или папки
Как создать папку obb
Второй вариант — берем в руки USB кабель, подключаемся к компьютеру. Идем по тому же пути — открываем нужный диск, заходим в папку android, создаем папку obb. Теперь, после установки кидаем туда файлы кеша и наслаждаемся любимыми играми.
Внимание! Не запускайте игру, пока не скопировали все необходимые файлы кеша, иначе придется повторять процесс установки заново.
Надеюсь все разобрались для чего нужна Android obb папка и что делать если нет папки obb.
В довесок бонусное видео как поставить GTA San Andreas на андроид:
Если у вас есть трудности с установкой каких-то конкретных игр — пишите в комментарии.
Евгений Загорский
IT специалист. Автор информационных статей на тему Андроид смартфонов и IOS смартфонов. Эксперт в области решения проблем с компьютерами и программами: установка, настройка, обзоры, советы по безопасности ваших устройств. В свободное время занимается дизайном и разработкой сайтов.
Источник
Как открыть карту памяти на телефоне?
Открытие содержимого карты памяти microSD через родной проводник и диспетчеры файлов.
Многие современные телефоны работают с картами памяти, которые позволяют расширить дисковое пространство на мобильном устройстве. На съемный носитель можно записать любую информацию — фотографии, музыку, видеоролики, документы и другие файлы. Емкость мобильных карт памяти может достигать даже 1 ТБ.
Чтобы пользоваться картой памяти, необходимо наличие файлового менеджера на телефоне. Он позволяет просматривать подключенные носители информации, записывать, копировать и удалять файлы.
Родной проводник или Google Files Go
Все мобильные устройства обладают встроенной программой для отображения файлов. Обычно она называется «Проводник» и располагается в главном меню. В смартфона на чистом Android, например, используется диспетчер файлов Google Files Go.
Любой проводник позволяет просматривать подключенные карты памяти. Для этого откройте приложение и выберете раздел под названием «SDcard» ил что-то похожее (зависит от системы и прошивки). После выбора пользователь сможет просматривать хранящуюся информацию на съемном носителе и совершать любые операции с файлами.
Приложение ES Проводник
Альтернативный способ — установка стороннего приложения. Найти и загрузить это приложение можно бесплатно из Google Play. После установки пользователь получит полноценный файловый диспетчер, посредством которого можно управлять внутренней и внешней памятью. Здесь поддерживаются возможности копирования, удаления и переименования файлов и папок. Также разработчики предлагают создавать списки избранного или работать с архивами. Программа отличается простым интерфейсом, поэтому будет понятна даже новичку.
Программа X-Plore
Альтернативный файловый менеджер для телефонов X-Plore отличается широкими функциональными возможностями и простым интерфейсом. После запуска приложения пользователь сможет просматривать встроенную память и карту памяти. В программе доступно создание новых папок, удаления файлов, переименования директорий и копирования информации. Также через программу можно передавать файлы на другие мобильные устройства. Чтобы открыть карту памяти на смартфоне через X-Plore, необходимо нажать по названию съемного накопителя в главном меню.
Карта памяти не отрывается на смартфоне
Иногда пользователи сталкиваются с проблемой, когда карта памяти на телефоне не открывается. Рекомендуется использовать несколько перечисленных файловых менеджеров. Также бывают ситуации, когда емкость карты превышает допустимый порог. Обычно производитель телефона указывает в характеристиках максимальный размер поддерживаемых съемных накопителей и их характеристики. Если карту памяти все равно не видно, рекомендуем изучить эту инструкцию.
Источник
Получение пути к карте памяти SD Card на Android
Разрабатывая приложение для проведения соревнований, я столкнулся с проблемой хранения базы данных. Проблема состояла в том, как мне определить внешнюю карту памяти. В целом поиск в сети точного ответа не дал. Поэтому, объединив все найденные результаты, я собрал свой класс. Если кому интересно, смотрим под катом.
Итак, начнем с теории.
Терминология
Гугл нам говорит, что есть следующие понятия:
- Внутренняя (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 же на ядре Linux работает). В последних случаях были использованы «зашитые» пути к папке с примонтироваными устройствами (в различных версиях эта директория разная). Не стоит забывать, что от версии к версии правила монтирования меняются.
В конечном итоге я решил объединить все полученные знания и написал свой класс, который может нам вернуть пути к внешним и удаляемым устройствам.
Описание кода
Был создан класс MountDevice, который содержит в себе путь к устройству, тип устройства и некий хэш.
Типов устройств выделено два (внутреннюю память я не стал трогать, так как к ней доступ можно получить через API системы).
И был создан класс StorageHelper, который и осуществляет поиск доступных карт памяти.
В классе StorageHelper реализовано два способа поиска — через системное окружение (Environment) и с использованием утилиты Linux mount, а точнее результата ее выполнения.
Способ первый — Environment
При работе с окружением я использую стандартную функцию getExternalStorageDirectory() для получения информации о внешней памяти. Чтобы получить информацию о удаляемой памяти, я использую переменную окружения «SECONDARY_STORAGE«.
Внешняя память всегда одна и обычно всегда есть, поэтому проверяем ее на читаемость, вычисляем хэш и запоминаем. Удаляемой памяти может быть много, поэтому необходимо полученную строку разбить по разделителю и проверять каждое значение.
Вариант решения взят со stackoverflow. Ответ где-то там внизу.
Способ второй — mount
Так как у меня долго не получалось заставить систему мне сказать путь к удаляемой памяти, я решил искать в сторону примонтированных устройств. В системе есть файлы конфигурации, в которых описаны правила монтирования внешних устройств. Все бы хорошо, но на Android версии 4.* к этому файлу простым смертным доступа нет, поэтому рассматривать этот способ не буду.
Вернемся к утилите mount. При запуске без параметров команда возвращает список смонтированных файловых систем. Удаляемые устройства имеют обычно формат файловой системы FAT, то будем выделять строки, в которых есть характеристика «fat«. Внешняя память будет характеризоваться параметром «fuse«.
Примечание: при использовании такого способа не всегда корректно (скорее всего я что-то не учел) определяются типы смотнтированных устройств. Разницу замечал на разных версиях Android. Поэтому этот способ можно использовать как дополнительный.
Вариант решения взят со stackoverflow. Ответов там несколько примерно одинаковых.
Про дублирование
Многие замечали в директории монтирования устройств такую картину:
И что самое интересно, все это одна и та же внешняя карта памяти. Такое дробление начинается с версии Jelly Bean и сделано это для поддержки многопользовательского режима работы системы. Более подробно тут. И вот, чтобы не получать одну и туже карту памяти как различные устройства, необходим способ определения идентичности. Если бы был доступ к конфигурации монтирования, то и вопросов не было. Но доступа нет. Поэтому я тут подсмотрел решение с расчетом хэша для каждого устройства:
- создаем StringBuilder
- записываем в него общий размер устройства и размер используемого пространства устройства
- обходим содержимое корня устройства
- записываем имя каталога
- записываем имя файла и размер
- вычисляем hash
Пример использования
Заключение
Подробные рассуждения по этому вопросу понимания памяти в Android, некоторые советы можно прочитать тут.
Исходный код всего класса расположен еще нигде не расположен. На днях постараюсь разместить на gitHub.
Источник