Как узнать какое приложение создало файл андроид

Обновлено: 03.07.2024

При использовании приложений под Android иногда появляются вопросы: «А где приложение хранит созданные файлы?», «Можно ли до них достучаться?» и «Удалятся ли файлы при удалении приложения?» Давайте попробуем посмотреть, где же приложение может хранить свои данные и какие последствия это имеет для пользователя.

Внутреннее хранилище данных

Смысл следует непосредственно из названия. Внутреннее хранилище (internal storage) располагается всегда в памяти смартфона вне зависимости от того, есть ли возможность установки карты памяти (и тем более того, вставлена ли она). Эта область памяти является защищенной. Находится в системном разделе /data. По умолчанию все файлы, которые там располагаются, доступны только тому приложению, которое их создало. Разумеется, можно сделать файлы доступными для других приложений, но это надо делать специально. Если приложение не открывает файлы для доступа извне, достучаться к ним можно будет только получив root.

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

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


Пример: приложение «Лекции по истории России». В приложении хороший контент (и по содержанию, и по качеству звука). Но сохраняется он во внутреннюю память. На бюджетных устройствах, где этой памяти мало, становится затруднительным закачать заранее много лекций, а потом, отключившись от интернета, слушать их. Второй проблемой становится собственно регламент доступа к данным. Даже если ограничиться тематикой истории, у меня есть аудиофайлы, полученные из трех источников: данное приложение, подкасты и аудиоверсии роликов с youtube. Хочется взять и объединить навек в их земной юдоли под владычеством всесильным Властелина Мордора их все в единый плейлист, и слушать его одним аудиоплеером. Но на смартфоне без root это сделать невозможно.


Внешнее хранилище «личных» данных

С точки зрения разработчика, кроме внутреннего хранилища данных, для персональных целей приложения есть еще внешнее хранилище. Оно необязательно размещается на карте памяти. Это может быть и внутренняя память смартфона, но весь раздел с такими данными размещается в общем доступе. В корне раздела есть папка Android/data, а в ней — подпапки с именами пакетов приложений.


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

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


Общее внешнее хранилище

Располагается в корне «внешнего» раздела на одном уровне с папкой «Android». Предназначается для хранения данных, разделяемых между разными приложениями. Обычно в документации Google в качестве примера приводят картинки (фото с камеры — папка DCIM). Основная проблема данных файлов: они никогда не удаляются автоматически. Даже если приложение вы удалили.


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


Как можно удалить файлы, не удаляя приложения

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

Данные (папка data) — некие файлы, которые, по логике Google, нужны для постоянной работы с ними. Если полностью их удалить, то приложение поведет себя точно так же, как если бы его переустановили (удалили и заново установили). Частичное удаление файлов может не привести ни к каким неприятным последствиям. Но важно понимать, какие конкретно данные вы удаляете (например, очевидно, что скачанные файлы подкастов можно удалять совершенно свободно — это не повлияет на работоспособность подкаст-менеджера).

Кэш — временные данные, которые сформированы в ходе работы приложения и нужны для ускорения этой работы. Например, данные, которые часто нужны в интернете, загружаются и в дальнейшем вместо загрузки открываются локально (разумеется, кэш может обновляться, чтобы не показывать устаревшие данные). Удалять кэш любого приложения можно совершенно спокойно, это штатная операция.


Очистка памяти и кэша вызывается из настроек приложения. Кнопка «Очистить кэш» очищает только кэш, а кнопка «Очистить данные» — и кэш, и данные приложения.

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

Когда приложения устанавливаются в корневую папку

Как установить кэш, если он находится не в архиве и не в папке

Часто кэш скачивается не в запакованном виде, а просто в виде файла OBB. В этом случае установка слегка усложняется:

Где находится папка загрузки в Яндекс Браузере?

По умолчанию в любом браузере все файлы сохраняются в папку «Загрузки» (на английском она называется «Downloads»). И Яндекс не является исключением. Но проблема в том, что многие пользователи не в курсе, где она находится. Путь к ней можно узнать, если посмотреть, где загрузки в Яндекс Браузере. Для этого надо:

  1. Открыть Yandex Browser.
  2. Нажать на три полоски в правом верхнем углу и зайти в «Настройки».


Синхронизация Яндекс Браузера — использование на разных компьютерах


Здесь в строчке «Сохранять в» указана папка загрузки Яндекс Браузера. То есть, путь, куда загружаются все скачанные файлы. Если после установки браузера пользователь не менял никаких настроек, то все данные будут сохраняться в этой папке.

Устройство APK-пакетов и их получение

Пакет приложения Android, по сути, является обычным ZIP-файлом, для просмотра содержимого и распаковки которого никаких специальных инструментов не требуется. Достаточно иметь архиватор — 7zip для Windows или консольный unzip в Linux. Но это что касается обертки. А что внутри? Внутри же у нас в общем случае такая структура:

  • META-INF/ — содержит цифровой сертификат приложения, удостоверяющий его создателя, и контрольные суммы файлов пакета;
  • res/ — различные ресурсы, которые приложение использует в своей работе, например изображения, декларативное описание интерфейса, а также другие данные;
  • AndroidManifest.xml — описание приложения. Сюда входит, например, список требуемых разрешений, требуемая версия Android и необходимое разрешение экрана;
  • x — компилированный байт-код приложения для виртуальной машины Dalvik;
  • resources.arsc — тоже ресурсы, но другого рода — в частности, строки (да-да, этот файл можно использовать для русификации!).

Перечисленные файлы и каталоги есть если не во всех, то, пожалуй, в абсолютном большинстве APK. Однако стоит упомянуть еще несколько не столь распространенных файлов/каталогов:

  • assets — аналог ресурсов. Основное отличие — для доступа к ресурсу необходимо знать его идентификатор, список asset’ов же можно получать динамически, используя метод AssetManager.list() в коде приложения;
  • lib — нативные Linux-библиотеки, написанные с помощью NDK (Native Development Kit).

Этот каталог используют производители игр, помещая туда движок игры, написанный на C/C++, а также создатели высокопроизводительных приложений (например, Google Chrome). С устройством разобрались. Но как же получить сам файл пакета интересующего приложения? Поскольку без рута с устройства забрать файлы APK не представляется возможным (они лежат в каталоге /data/app), а рутить не всегда целесообразно, имеется как минимум три способа получить файл приложения на компьютер:

Какой из них использовать — дело вкуса; мы предпочитаем использовать отдельные приложения, поэтому опишем использование Real APK Leecher, тем более что написан он на Java и, соответственно, работать будет хоть в винде, хоть в никсах.


Настройка Real APK Leecher

Хакер . Малварь для OS X

Как устанавливать приложения на Андроиде на SD карту

Большинство современных смартфонов выпускаются с большим объемом внутренней памяти, однако на рынке еще много представлено моделей, у которых память телефона не превышает 16 Гб, чего уже мало для 2019 года. Почему, спросите вы? Фотографии занимают больше всего пространства, если их много, однако здесь можно выделить и обилие различных приложений или игр, установленных в девайсе, поэтому прибегают к помощи SD-карт, приобрести которые можно в любом магазине от 2 до 256 Гб (в некоторых случаях есть и большие объемы, в зависимости от производителя).

Однако здесь появляется проблема! Все продукты, загружаемые в Google Play, устанавливаются все равно в память телефона, и при этом SD-карта не используется по предназначению. Отсюда два вопроса: как устанавливать приложения на Андроиде сразу на SD-карту и как их переносить с телефона на флешку, если инсталляция по умолчанию идет все-таки в память телефона? На эти вопросы мы и ответили максимально подробно в рамках этого материала.

Где хранятся контакты на Android

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

Чтобы найти контакты на Android, доктор прописал адрес: /data/data/viders.contacts/databases.

Там ищем файл contacts.db. На некоторых версиях ОС он может называться contacts2.db. ВАЖНО: чтобы прочитать этот файл, потребуется наличие root-прав. По сути дела, contacts.db является базой данных.

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

Где хранятся скачанные файлы?

Если мы говорим про файлы, которые пользователи скачивают из сети, то для них обычно используется папка Download. Чтобы найти ее, необходимо использовать любой файловый менеджер, например, ES Проводник, как в нашем случае.

Заходим и ищем папку Download. Обратите внимание: если у вас установлена карта памяти, то на ней может быть автоматически создана папка Download, куда помещаются скачанные файлы.


А вот скачанный файл в папке Download.


Отличия семейства Linux/Android от Windows

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

Почти все мы пользуемся персональными компьютерами с той или иной версией операционной системы Windows. В ней информация распределяется по дискам. Обычно С это системный раздел, D предназначен для хранения данных, а каталоги от E до Z представляют собой съемные носители.

В семействе Linux все выглядит немного иначе. Там файловая структура задана древовидной архитектурой. Если вы хотя бы один раз заходили при помощи файлового менеджера в каталог своего Android устройства, то абсолютно точно представляете, как выглядит это дело.

Хочу обратить внимание читателей на то, что Windows обычно не реагирует на регистр. Большие буквы там, маленькие, смешанные – все это компьютеру просто до лампочки. Но попробуйте задать 4-ем папкам в Android имена Pack, pack и PACK – и система воспримет их как все разные.

Основные ключевые каталоги в операционной системе android

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

Стоит отметить, что список папок может отличаться в зависимости от устройства и версии системы android. Также конкретные приложения могут создавать свои папки в памяти телефона на Андроиде. Рассмотрим, какие директории имеются в Андроид.

Cache – это папка для хранения временных файлов. В ней может находиться обновление системы. Если вы не собираетесь обновляться до более свежей версии Андроида, то файл обновления вам не нужен. Удалить эту папку можно, а в некоторых случаях даже нужно.

Data – один из крупнейших каталогов, который, как можно догадаться по названию, содержит разнообразные данные. Сюда входят данные аккаунтов, информация о сохраненных паролях, точках доступа Wi-Fi и т.п. Так как данная папка содержит множество информации, рассмотрим ее подкаталоги:

  1. App – директория, в которой содержатся установочные файлы различных приложений. Ее можно удалить, если вам не нужны все скачанные на телефон приложения;
  2. Data – включает в себя настройки, сохранения и другую служебную информацию, необходимую для работы конкретных приложений. Если важных для вас данных в приложениях нет, ее также можно удалить;
  3. Clipboard – это специальный буфер обмена данными, в котором также содержаться последние скриншоты. Удалить эту папку можно, но не рекомендуется;
  4. Dalvik-cache – это область кеш-памяти для программы под названием Davlink. Данное приложение является виртуальной Java-машиной, которая позволяет телефону запускать apk-файлы приложений. Чтобы максимально ускорить этот процесс, создаются файлы в кеш-памяти. Рекомендуется регулярно чистить содержимое, но удалять dalvik-cache не стоит.

Папка efs содержит информацию о серийном номере телефона (IMEI), MAC-адресе, Bluetooth и Wi-Fi. Эту директорию удалять нельзя. Более того, рекомендуется сделать бэкап этой папки, так как ее удаление приведет к потере уникального номера вашего смартфона.

Директория etc – содержит файлы конфигурации, преимущественно используемые во время загрузки ОС, процессов различных программ, к примеру, для определения местоположения по GPS. Это одна из системных директорий, удалять которую нельзя.

Каталог lib – в нем содержатся различные библиотеки, необходимые для корректной работы функций программ и модулей. Также данная папка содержит файлы, обеспечивающие работу драйверов. Удалять ее нельзя.

Каталог mnt – содержит образы монтируемых систем. Здесь могут располагаться разделы установленной карты памяти, внутренней памяти или других виртуальных устройств. Удалять данный каталог, естественно, тоже нельзя.

Папка proc – в ней содержится вся ключевая информация касательно установленной ОС Андроид: информация о ядре, параметрах конфигурации и оборудования. Все имеющиеся файлы и папки являются виртуальными, при этом весят ноль байт. Система автоматически создает их, когда пользователь получает доступ к ним. Эту папку с правами обычного пользователя удалить нельзя.

Директория sbin – одна из ключевых папок, необходимых для работы телефона. В ней имеются исполняемые файлы всех программ, предназначенных для управления системой. Ее удалять, соответственно, нельзя.

Каталог sys содержит конфигурацию системы на данный момент. Это динамический каталог. Информация в нем постоянно меняется. Стирать эту папку нельзя.

  1. App – системные обои, стандартные приложения (календарь, записная книжка, СМС) находятся в этой папке.
  2. Bin включает в себя исполняемые файлы и ссылки;
  3. p содержит огромное количество настроек по телефону, например, на сколько задерживается работа сенсора после нажатия, какова плотность экрана и другое;
  4. Fonts – информация обо всех стоковых шрифтах, поддерживаемых в телефоне.
  5. Framework – все, что необходимо для интерфейса, в частности иконки, шторки и другие графические элементы;
  6. Lib – библиотека приложений;
  7. Media – все стандартные мелодии и звуки (будильник, оповещения на SMS, мелодии вызова);
  8. Tts включает языковые пакеты.

Documents – папка, в которой могут находиться разнообразные документы, в частности файлы формата.doc и.pdf. Если содержание папки вас не интересует, ее можно удалить.

DCIM – это специальная директория для сохранения фотографий, созданных с помощью камеры вашего смартфона. Как правило, включает в себя раздел Camera, в котором располагаются все фото. Если необходимых для вас фото на телефоне нет, то ее можно удалить. Такие разделы, как Pictures, Images, Audio, Music (при отсутствии важных файлов внутри) также можно удалить.

Где посмотреть загрузки с Яндекс.Браузера на телефоне Андроид

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

Где закладки в Яндекс.Браузере на андроиде

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

Чтобы просмотреть загрузки на мобильном устройстве, необходимо выполнить следующие действия:

  1. Запустить на телефоне браузер и открыть любую вкладку.
  2. Далее, необходимо нажать кнопку в виде трех горизонтальных линий или точек. Расположена она в верхней части экрана телефона с правой стороны.
  3. Среди доступных функциональных возможностей, нужно нажать на «Загрузки».

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

Обратите внимание! На мобильных устройствах загрузки можно открыть исключительно в режиме просмотра вкладок.


Как посмотреть загрузки Yandex браузера


Android SDK предоставляет много средств для работы с системой. В том числе он позволяет получать список приложений, которые установлены на устройстве. Это может быть полезно, когда нужно получить сведения о сторонних приложениях (размер APK, путь до приложения, имя пакета и т.д.). Например, в наших приложениях получение списка, содержащего сторонние приложения, играет большую роль: в GreenBro с помощью этого списка выводятся сведения о приложениях, а также выполняются различные действия.


В Менеджере системных приложений и APK Extractor же список приложений необходим, чтобы удалять приложения и извлекать APK из приложений соответственно.

В этой статье мы рассмотрим, как можно получать список приложений, установленных на устройстве, а также как происходит установка приложений на устройство.

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

Получить экземпляр класса PackageManager можно с помощью метода getPackageManager(). PackageManager предоставляет методы для запросов к установленным пакетам и соответствующим разрешениям.

В зависимости от типа данных, на Androiid файлы могут храниться в следующих местах:

  • Предустановленные и системные приложения (Камера, Браузер и т.д.) хранятся в /system/app/
  • Установленные пользователем приложения хранятся в /data/app/
  • PackageManager создаёт каталог /data/data/<имя пакета>/ для хранения базы данных, файлов с предпочтениями, нативных библиотек и кеша.

Менеджер пакетов хранит информацию о приложении в трёх файлах, расположенных в /data/system.

packages.xml

Этот XML-файл содержит список разрешений и пакеты\приложения. Он хранит две вещи: разрешения и пакет. Например:

Тег <package> содержит 10 атрибутов и несколько подтегов.

Атрибут Описание
name Имя пакета
codePath Путь установки APK
nativeLibraryPath Нативная библиотека, расположенная по умолчанию в /data/data/<имя пакета>/lib
flag Хранит флаги ApplicationInfo
ft Время в шестнадцатtричном формате
lt Время установки в шестнадцатеричном формате
ut Время последнего обновления в шестнадцатеричном формате
version Код версии из AndroidManifest.xml
sharedUserId Идентификатор пользователя Linux, который будет использоваться совместно с другими приложениями.
userId Идентификатор пользователя Linux

Подтеги же здесь следующие:

packages.list

Это простой текстовый файл, содержащий имя пакета, идентификатор пользователя, флаги и каталог data.

package-stopped.xml

Рассмотрим получение списка установленных приложений на примере GreenBro.

При запуске приложения запускается AsyncTask, внутри которого получаем экземпляр PackageManager и затем копируем в список List<ApplicationInfo> все данные об установленных приложениях.

Метод getInstalledApplications() принимает в качестве параметра флаг GET_META_DATA, который определяет, что нам нужные метаданные каждого пакета.

Результатом является список объектов ApplicationInfo для каждого установленного приложения. Класс ApplicationInfo предоставляет подробную информацию о пакете, собранную из тега <application> в AndroidManifest.xml, нам оттуда нужны лишь самые важные данные.

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

Здесь с помощью метода getPackageInfo() класса PackageManager мы получаем общую информацию о приложении по заданному имени пакета. После эта информация объединяется с информацией, полученной от getInstalledApplications() и сохраняется в объекте AppInfo со следующими полями:

Чтобы узнать название приложения, можно также воспользоваться PackageManager, как показано ниже.

Проверка же на то, является ли приложение системным, тоже достаточно проста и показана ниже.

В конце работы AsyncTask возвращает результат обратно в основной поток. Вот и всё, мы загрузили себе список всех установленных на устройстве приложений и можем продолжить с ним работу.

Получение списка приложений в Android : 4 комментария

Это локальная переменная, Вы можете передавать контекст из активити или фрагмента

а есть ли функция наподобие getRunnedApplications(), которая выдает список запущенных последних приложений?

как отличить приложение от сервиса? Проверка на системное приложение не помогает

Как в Андроид cменить программу по умолчанию для открытия файлов

Как в Андроид cменить программу по умолчанию для открытия файлов. Судя по письмам, приходящим к нам на сайт, многие начинающие Android пользователи часто сталкиваются с такой неприятной ситуацией, когда, например, хотелось бы посмотреть содержимое zip файла или распаковать его, а вместо этого он открывается в приложении для чтения книг Cool Reader.

Как в Андроид cменить программу по умолчанию для открытия файлов

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

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

После этого откроется окно со свойствами этого приложения «О приложении»:

Как в Андроид cменить программу по умолчанию для открытия файлов

Прокрутите содержимое окна вниз, пока не увидите пункт «ЗАПУСК ПО УМОЛЧАНИЮ». Для того чтобы сбросить умолчания нажмите на кнопку «Удалить настройки по умолчанию».

Всё, теперь после клика по zip архиву из примера в начале статьи, вы увидите заветный диалог выбора программы, с помощью которой можно открыть этот файл. Теперь вы можете или задать новую программу по умолчанию или каждый раз выбирать соответствующее приложение из списка.

Совет: Когда вы видите подобный диалог, для того чтобы быстро выбрать нужное приложение, не нажимая затем кнопку «Только сейчас», кликните по его иконке двойным тапом:

Как в Андроид cменить программу по умолчанию для открытия файлов

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

Ну вот, теперь вы знаете как в Андроид можно отменить или задать программу по умолчанию. Правда же это совсем не сложно?

Читайте также: