Как узнать имя пакета андроид приложения
Полный текст статьи и исходники программы доступны только зарегистрированным участникам сайта.
Прочитайте внимательно условия! В начале каждой статьи указывается, к какому курсу относится данная статья. Например, если статья из 4 курса, значит нужно заплатить за все курсы по четвёртый включительно.
Стоимость регистрации — символические 360 рублей. После регистрации у вас будет доступ ко второму курсу.
Для регистрации сначала необходимо пополнить ЮMoney 410011383280263 на указанную сумму или QIWI (перевод по никнейму), а затем прислать письмо на адрес [email protected] с указанием, на какой кошелёк вы делали оплату и реквизиты, по которым можно вас определить (не прикрепляйте к письму картинки или файлы, пишите в письме). Учитывайте комиссию при переводах.
По поводу перевода на ЮMoney. Если делать перевод по указанной ссылке, то к сумме нужно прибавить 3% самостоятельно. Если вы знаете, как переводить по номеру кошелька 410011383280263 без указанной ссылки, то по идее ваш банк сам рассчитает комиссию. Эти новые правила стали применяться в октябре 2022, возможно вам придётся доплачивать, когда я увижу точную сумму прихода.
Не присылайте в письме мои номера кошельков — поверьте, я их знаю и без вас.
В ответном письме вы получите учётные данные для чтения статей из закрытой зоны за второй курс.
Доступ к третьему курсу обучения доступен только после оплаты второго курса и составляет 360 руб.
Доступ к четвёртому курсу обучения доступен после оплаты третьего курса и составляет 360 руб. и т.д.
При оплате сразу всех курсов одновременно (2-10) цена составит 3200 руб.
Доступ даётся как минимум на один год. Для тех, кто оплатил третий и другие курсы, сроки доступа увеличиваются.
Также возможен приём на PayPal (только для зарубежных пользователей). Обратите внимание, что в этом случае стоимость одного курса составляет 7$.
На данный момент PayPal не доступен в России.
Webmoney тоже не особо доступен в России, но по запросу можно отправить на Z-кошелёк (7S), если вдруг кому-то удобно из других стран.
Android: Как узнать имя пакета приложения?
Вы уверены, что в appsList у вас названия приложений? Запустил ради проверки, получил одну длинную строку [ResolveInfo
Я считаю, что у вас в корне неверный подход к задаче. Лично я бы создал свой подкласс адаптера с переопределенным getView() и адаптеру передавал бы сразу список (или массив, не суть важно) из ResolveInfo. У объектов ResolveInfo внутри содержится вся необходимая информация.
Отслеживать
ответ дан 20 ноя 2012 в 18:16
963 8 8 серебряных знаков 12 12 бронзовых знаков
Вот этот метод возвращает имя пакета вашего приложения
getApplicationContext().getPackageName();
Отслеживать
ответ дан 20 ноя 2012 в 20:39
1,215 9 9 серебряных знаков 15 15 бронзовых знаков
- android
- java
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.11.21.1314
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
[Android] Как узнать название пакета и activity из apk-приложения
Задача: узнать название пакета Android-приложения в формате apk и запускаемого активити.
Решение:
Можно взять и открыть AndroidManifest.xml, чтобы посмотреть нужные данные, к примеру, через команду cat:
versionCode minSdkVersiontargetSdkVersionnameprotectionLevel versionName allowBackuphardwareAcceleratediconlabelthemescreenOrientation launchMode permissionvalueandroid*http://schemas.android.com/apk/res/ androidpackagmanifestcom.mobileshop2.uses-sdkuses-permissionandroid. permission.INTERNETandroid.permission.WAKE_LOCK)android.permission. ACCESS_COARSE_LOCATIONandroid.permission.VIBRATE)com.mobileshop. permission.C2D_MESSAGE*com.google.android.c2dm.permission.RECEIVE applicatioactivitycom.intent-filteractionandroid.intent.action. MAIcategory android.intent.category.LAUNCHEreceiver'com.mobileshop. GcmBroadcastReceiver'com.google.android.c2dm.permission.SEND&com. google.android.c2dm.intent.RECEIVEservice#com.mobileshop. GcmIntentService meta-dataserver_addresshttp://mobileshop.com/D
Большая часть содержимого файла AndroidManifest.xml является нечитабельной, т.к. сам файл является двоичным, а то, что поддается чтению, имеет не самый удобный формат для восприятия. Мы видим, что имя пакета имеет название com.mobileshop, но мы не видим название запускаемого активити.
Можно воспользоваться услугами утилиты AAPT (Android Asset Packaging Tool), которая представляет из себя упаковщик для сборки приложения, библиотек и ресурсов в единый apk-файл. Утилита входит в состав Android SDK и располагается в моем случае в директории /Applications/AndroidSDK/build-tools/17.0.0/.
Чтобы узнать название пакета apk-приложения:
./aapt dump badging | grep «package»
package: name='com.mobileshop' versionCode='13' versionName='2.0'
Чтобы узнать название запускаемого активити apk-приложения:
./aapt dump badging /User/Desktop/HTC_Market_v2.0.apk | grep «launchable-activity»
launchable-activity: name='com.mobileshop.MainActivity' label='Mobile Shop' icon=''
Получение списка приложений в 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-файл содержит список разрешений и пакеты\приложения. Он хранит две вещи: разрешения и пакет. Например:
Разрешения хранятся в теге . Каждое разрешение имеет три атрибута: name, package и protection. Атрибут name это имя разрешения, которое мы используем в AndroidManifest.xml. Атрибут package указывает на пакет, которому принадлежит разрешение, в большинстве случаев это «android». Атрибут protection указывает на уровень безопасности.
Тег содержит 10 атрибутов и несколько подтегов.
| Атрибут | Описание |
| name | Имя пакета |
| codePath | Путь установки APK |
| nativeLibraryPath | Нативная библиотека, расположенная по умолчанию в /data/data//lib |
| flag | Хранит флаги ApplicationInfo |
| ft | Время в шестнадцатtричном формате |
| lt | Время установки в шестнадцатеричном формате |
| ut | Время последнего обновления в шестнадцатеричном формате |
| version | Код версии из AndroidManifest.xml |
| sharedUserId | Идентификатор пользователя Linux, который будет использоваться совместно с другими приложениями. |
| userId | Идентификатор пользователя Linux |
Подтеги же здесь следующие:
- представляет собой информацию о сигнатуре, атрибут count — количество тегов .
- это ключ сертификата, атрибут index представляет собой глобальный индекс сертификата.
- содержат разрешения, которые разработчик установил в AndroidManifest.xml
packages.list
Это простой текстовый файл, содержащий имя пакета, идентификатор пользователя, флаги и каталог data.
com.android.launcher 10013 0 /data/data/com.android.launcher com.android.quicksearchbox 10033 0 /data/data/com.android.quicksearchbox com.android.contacts 10001 0 /data/data/com.android.contacts com.android.inputmethod.latin 10006 0 /data/data/com.android.inputmethod.latin
package-stopped.xml
Этот файл содержит список пакетов, которые были остановлены. Остановленные приложения не могут принимать широковещательные сообщения.
Получаем список приложений
Рассмотрим получение списка установленных приложений на примере GreenBro.
При запуске приложения запускается AsyncTask, внутри которого получаем экземпляр PackageManager и затем копируем в список List все данные об установленных приложениях.
final PackageManager pm = context.getPackageManager(); List apps = new ArrayList<>(); List packages = pm.getInstalledApplications(PackageManager.GET_META_DATA);
Метод getInstalledApplications() принимает в качестве параметра флаг GET_META_DATA, который определяет, что нам нужные метаданные каждого пакета.
Результатом является список объектов ApplicationInfo для каждого установленного приложения. Класс ApplicationInfo предоставляет подробную информацию о пакете, собранную из тега в AndroidManifest.xml, нам оттуда нужны лишь самые важные данные.
Поэтому в цикле проверяем каждый объект из полученного списка и записывать данные в собственный класс AppInfo, чтобы затем использовать в основном потоке.
for (ApplicationInfo appInfo : packages) < PackageInfo packageInfo; try < packageInfo = pm.getPackageInfo(appInfo.packageName, 0); File file = new File(appInfo.publicSourceDir); String size = formatFileSize(context, file.length()); AppInfo newApp = new AppInfo(applicationLabel(context, appInfo), appInfo.packageName, appInfo.sourceDir, appInfo.publicSourceDir, packageInfo.versionName, packageInfo.versionCode, isSystemPackage(packageInfo), size, file.length(), appInfo.dataDir, appInfo.nativeLibraryDir, file.lastModified(), packageInfo.firstInstallTime, packageInfo.lastUpdateTime, appInfo.enabled); apps.add(newApp); publishProgress(newApp); >catch (PackageManager.NameNotFoundException e) < e.printStackTrace(); >>
Здесь с помощью метода getPackageInfo() класса PackageManager мы получаем общую информацию о приложении по заданному имени пакета. После эта информация объединяется с информацией, полученной от getInstalledApplications() и сохраняется в объекте AppInfo со следующими полями:
- title — название приложения
- packageName — имя пакета
- sourceDir — полный путь до APK приложения
- publicSourceDir — путь до общедоступных частей sourceDir
- versionName — имя версии
- isSystem — определяет, является ли приложение системным
- size — размер приложения (в удобной форме)
- longSize — размер приложения в long
- dataDir — полный путь к каталогу data
- nativeLibraryDir — путь до нативных библиотек
- modified — дата последнего изменения
- firstInstallTime — дата установки
- lastUpdateTime — дата последнего обновления
- enabled — определяет, включено ли приложение
Чтобы узнать название приложения, можно также воспользоваться PackageManager, как показано ниже.
private String applicationLabel(Context con, ApplicationInfo packageInfo)
Проверка же на то, является ли приложение системным, тоже достаточно проста и показана ниже.
private boolean isSystemPackage(PackageInfo pkgInfo)
В конце работы AsyncTask возвращает результат обратно в основной поток. Вот и всё, мы загрузили себе список всех установленных на устройстве приложений и можем продолжить с ним работу.
Раздел: Кодинг Метки: Android, aplication, apps, info, manager, permissions
Получение списка приложений в Android : 4 комментария
- Tim 03.08.2018 Подскажите пожалуйста, в конструкции:
final PackageManager pm = context.getPackageManager();
List apps = new ArrayList();
List packages = pm.getInstalledApplications(PackageManager.GET_META_DATA);
Чем является «context»?
- Владимир 03.08.2018 Это локальная переменная, Вы можете передавать контекст из активити или фрагмента
