[Android] Как узнать название пакета и activity из apk-приложения
Задача: узнать название пакета Android-приложения в формате apk и запускаемого активити.
Решение:
Можно взять и открыть AndroidManifest.xml, чтобы посмотреть нужные данные, к примеру, через команду cat:
Большая часть содержимого файла AndroidManifest.xml является нечитабельной, т.к. сам файл является двоичным, а то, что поддается чтению, имеет не самый удобный формат для восприятия. Мы видим, что имя пакета имеет название com.mobileshop, но мы не видим название запускаемого активити.
Можно воспользоваться услугами утилиты AAPT (Android Asset Packaging Tool), которая представляет из себя упаковщик для сборки приложения, библиотек и ресурсов в единый apk-файл. Утилита входит в состав Android SDK и располагается в моем случае в директории /Applications/AndroidSDK/build-tools/17.0.0/.
Чтобы узнать название пакета apk-приложения:
./aapt dump badging <path_to_apk> | grep «package»
Чтобы узнать название запускаемого активити apk-приложения:
./aapt dump badging /User/Desktop/HTC_Market_v2.0.apk | grep «launchable-activity»
Как узнать название приложения для Android?
Чтобы обойти ограничение поиска, приложения Android можно искать в System Manager по идентификатору имени пакета. Один из методов поиска имени пакета приложения — это найти приложение в магазине приложений Google Play с помощью веб-браузера. Имя пакета будет указано в конце URL-адреса после символа ‘? >
Как узнать название приложения?
Осмотрите URL и скопируйте имя приложения Android.
.
Найдите название приложения для Android
- Перейдите в магазин приложений Google Play.
- Поиск по названию приложения.
- Щелкните результат для своего приложения.
Где я могу найти идентификатор приложения для Android?
Android. Мы используем идентификатор приложения (название пакета), чтобы идентифицировать ваше приложение в нашей системе. Вы можете найти это в URL-адрес приложения в Play Маркете после id. Например, в https://play.google.com/store/apps/details?id=com.company.appname идентификатором будет com.
Что такое пакет APK?
Имя пакета APK: каталог приложения в операционной системе Android, а также адрес приложения в Google Play Store. Следовательно, имя пакета APK должно быть уникальным (несколько приложений с одним и тем же именем пакета APK не могут быть опубликованы).
Как мне найти владельца приложения?
Найти контактную информацию разработчика приложения
- Откройте приложение Google Play Store.
- Найдите или найдите приложение.
- Коснитесь приложения, чтобы открыть страницу сведений.
- Коснитесь Контакт разработчика.
- Прокрутите вниз, чтобы просмотреть указанную контактную информацию.
Сколько стоит создание приложения?
Сколько стоит создание приложения во всем мире? Недавнее исследование GoodFirms показывает, что средняя цена простого приложения составляет от 38,000 91,000 до XNUMX XNUMX долларов. Стоимость приложения средней сложности составляет от 55,550 131,000 до 91,550 211,000 долларов. Сложное приложение может стоить от XNUMX XNUMX до XNUMX XNUMX долларов.
Как узнать идентификатор моего приложения APK?
Разверните файл apk с помощью apktool d и прочтите AndroidManifest. xml. Простым решением было бы Open Android Studio -> Build -> Analyze Apk . просмотрите и выберите APK, теперь вы можете найти имя пакета и в значительной степени вы можете прочитать.
Как мне найти магазин приложений?
Найдите приложение Google Play Store
- На вашем устройстве перейдите в раздел Приложения.
- Коснитесь Google Play Store.
- Приложение откроется, и вы сможете искать и просматривать контент для загрузки.
Что такое Android ID?
Идентификатор устройства Android: уникальный буквенно-цифровой код, сгенерированный для вашего телефона Android при первой настройке. Этот код в основном идентифицирует ваше устройство аналогично тому, как работает номер IMEI. Однако идентификатор устройства Android используется специально для идентификации, а не для отслеживания вашего устройства.
Systemui — это вирус?
Хорошо, это 100% вирус! Если вы перейдете в диспетчер загруженных приложений, удалите все приложения, которые начинаются с com. android также установите CM Security из Google Play, и он избавится от него!
Какое приложение будет самым популярным в 2020 году?
IQiyi от Baidu находится в первой десятке списка, но если бы у нас были значения с китайского рынка приложений для Android, мы ожидаем, что количество загрузок составило бы 200 миллионов.
.
Самые популярные развлекательные приложения 2020 года.
Android: Как узнать имя пакета приложения?
Задача: из названия приложения в appsList[i] узнать имя пакета.
![]()
Вы уверены, что в appsList у вас названия приложений? Запустил ради проверки, получил одну длинную строку [ResolveInfo<4056edf8 com.android.mms.ui.ConversationList. ] . Соответственно, заданный вопрос смысла не имеет.
Я считаю, что у вас в корне неверный подход к задаче. Лично я бы создал свой подкласс адаптера с переопределенным getView() и адаптеру передавал бы сразу список (или массив, не суть важно) из ResolveInfo. У объектов ResolveInfo внутри содержится вся необходимая информация.
Вот этот метод возвращает имя пакета вашего приложения
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.3.3.43278
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Получение списка приложений в Android

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

В Менеджере системных приложений и APK Extractor же список приложений необходим, чтобы удалять приложения и извлекать APK из приложений соответственно.
В этой статье мы рассмотрим, как можно получать список приложений, установленных на устройстве, а также как происходит установка приложений на устройство.
Класс PackageManager
PackageManager предоставляет API, который фактически управляет установкой, удалением и обновлением приложений. Когда мы устанавливаем файл APK, PackageManager анализирует этот APK и выводит результат.
Получить экземпляр класса PackageManager можно с помощью метода getPackageManager(). PackageManager предоставляет методы для запросов к установленным пакетам и соответствующим разрешениям.
Где хранятся файлы APK на Android?
В зависимости от типа данных, на Androiid файлы могут храниться в следующих местах:
- Предустановленные и системные приложения (Камера, Браузер и т.д.) хранятся в /system/app/
- Установленные пользователем приложения хранятся в /data/app/
- PackageManager создаёт каталог /data/data/<имя пакета>/ для хранения базы данных, файлов с предпочтениями, нативных библиотек и кеша.
Как PackageManager хранит информацию о приложении?
Менеджер пакетов хранит информацию о приложении в трёх файлах, расположенных в /data/system.
packages.xml
Этот XML-файл содержит список разрешений и пакеты\приложения. Он хранит две вещи: разрешения и пакет. Например:
Разрешения хранятся в теге <permissions>. Каждое разрешение имеет три атрибута: name, package и protection. Атрибут name это имя разрешения, которое мы используем в AndroidManifest.xml. Атрибут package указывает на пакет, которому принадлежит разрешение, в большинстве случаев это «android». Атрибут protection указывает на уровень безопасности.
Тег <package> содержит 10 атрибутов и несколько подтегов.
| Атрибут | Описание |
| name | Имя пакета |
| codePath | Путь установки APK |
| nativeLibraryPath | Нативная библиотека, расположенная по умолчанию в /data/data/<имя пакета>/lib |
| flag | Хранит флаги ApplicationInfo |
| ft | Время в шестнадцатtричном формате |
| lt | Время установки в шестнадцатеричном формате |
| ut | Время последнего обновления в шестнадцатеричном формате |
| version | Код версии из AndroidManifest.xml |
| sharedUserId | Идентификатор пользователя Linux, который будет использоваться совместно с другими приложениями. |
| userId | Идентификатор пользователя Linux |
Подтеги же здесь следующие:
- <sigs> представляет собой информацию о сигнатуре, атрибут count — количество тегов <cert>.
- <cert> это ключ сертификата, атрибут index представляет собой глобальный индекс сертификата.
- <perms> содержат разрешения, которые разработчик установил в AndroidManifest.xml
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 со следующими полями:
- title — название приложения
- packageName — имя пакета
- sourceDir — полный путь до APK приложения
- publicSourceDir — путь до общедоступных частей sourceDir
- versionName — имя версии
- isSystem — определяет, является ли приложение системным
- size — размер приложения (в удобной форме)
- longSize — размер приложения в long
- dataDir — полный путь к каталогу data
- nativeLibraryDir — путь до нативных библиотек
- modified — дата последнего изменения
- firstInstallTime — дата установки
- lastUpdateTime — дата последнего обновления
- enabled — определяет, включено ли приложение
Чтобы узнать название приложения, можно также воспользоваться PackageManager, как показано ниже.
Проверка же на то, является ли приложение системным, тоже достаточно проста и показана ниже.
В конце работы AsyncTask возвращает результат обратно в основной поток. Вот и всё, мы загрузили себе список всех установленных на устройстве приложений и можем продолжить с ним работу.
Получение списка приложений в Android : 4 комментария
Подскажите пожалуйста, в конструкции:
final PackageManager pm = context.getPackageManager();
List apps = new ArrayList();
List packages = pm.getInstalledApplications(PackageManager.GET_META_DATA);
Чем является «context»?
Это локальная переменная, Вы можете передавать контекст из активити или фрагмента
» List packages = pm.getInstalledApplications( »
а есть ли функция наподобие getRunnedApplications(), которая выдает список запущенных последних приложений?
как отличить приложение от сервиса? Проверка на системное приложение не помогает