Как получить список ВСЕХ приложений (включая системные приложения)?

Я делаю следующее, чтобы получить список приложений, и я получаю только те приложения, которые были установлены, но не ВСЕ приложения, включая системные приложения.

Я пробовал следующее:

    packageList1 = getPackageManager().getInstalledPackages(PackageManager.GET_META_DATA);

и это:

    packageList1 = getPackageManager().getInstalledPackages(0);

В обоих случаях я получаю один и тот же список приложений, установленных на телефоне.


person user1406716    schedule 12.05.2014    source источник
comment
Вы уверены, что в списке нет системных приложений? Поскольку так и должно быть, скорее всего, вы неправильно интерпретируете данные. Прокрутите все ApplicationInfos, а те, у которых есть флаг FLAG_UPDATED_SYSTEM_APP или FLAG_SYSTEM, являются системными приложениями.   -  person Xaver Kapeller    schedule 12.05.2014
comment
Вы правы, я неправильно понял часть своего кода (я делаю некоторую постобработку после получения списка)   -  person user1406716    schedule 12.05.2014


Ответы (1)


Вы уже получаете список всех установленных приложений, включая системные приложения, вызвав это:

List<ApplicationInfo> apps = getPackageManager().getInstalledPackages(0);

Те, что с флагами:

  • ApplicationInfo.FLAG_UPDATED_SYSTEM_APP
  • ApplicationInfo.FLAG_SYSTEM

являются системными приложениями. Вы можете проверить наличие флагов следующим образом:

List<ApplicationInfo> apps = getPackageManager().getInstalledApplications(0);
for(ApplicationInfo app : apps) {
    if((app.flags & (ApplicationInfo.FLAG_UPDATED_SYSTEM_APP | ApplicationInfo.FLAG_SYSTEM)) > 0) {
        // It is a system app
    } else {
        // It is installed by the user
    }
}
person Xaver Kapeller    schedule 12.05.2014
comment
как получить все пакеты в Android Oreo, не работая для Android 8.0? - person Mohd Saquib; 15.03.2018