Получить список установленных приложений для Android

Привет, я хочу получить список всех установленных приложений на устройстве пользователя, которое я долго гуглял, но не могу найти то, что я хочу, эта ссылка была самой близкой и работает нормально, за исключением того, что я новичок, не понимаю как использовать метод getPackages(); и создать список с ним

http://www.androidsnippets.com/get-installed-applications-with-name-package-name-version-and-icon

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

1 ответ

Решение

Я работал над чем-то вроде этого недавно. В начале я скажу одну вещь: убедитесь в этом и выполните это в отдельном потоке - запрос информации о приложении - МЕДЛЕННЫЙ. Далее вы получите список ВСЕХ установленных приложений. Это будет включать в себя множество системных приложений, которые вам, вероятно, не интересны.

PackageManager pm = getPackageManager();
List<ApplicationInfo> apps = pm.getInstalledApplications(0);

Чтобы ограничить его только установленными пользователем или обновленными системными приложениями (например, Maps, GMail и т. Д.), Я использовал следующую логику:

List<ApplicationInfo> installedApps = new ArrayList<ApplicationInfo>();

for(ApplicationInfo app : apps) {
    //checks for flags; if flagged, check if updated system app
    if((app.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0) {
        installedApps.add(app);
    //it's a system app, not interested
    } else if ((app.flags & ApplicationInfo.FLAG_SYSTEM) != 0) {
        //Discard this one
    //in this case, it should be a user-installed app
    } else {
        installedApps.add(app);
    }
}

РЕДАКТИРОВАТЬ: Кроме того, чтобы получить имя и значок для приложения (что, вероятно, занимает больше всего времени - я не сделал никакого глубокого изучения этого - используйте это:

String label = (String)pm.getApplicationLabel(app);
Drawable icon = pm.getApplicationIcon(app);

Установленные приложения должны иметь полный список необходимых вам приложений. Надеюсь, это поможет, но вам, возможно, придется немного изменить логику в зависимости от того, какие приложения вам нужно вернуть. Опять же, это МЕДЛЕННО, но это просто то, что вы должны обойти. Возможно, вы захотите создать кеш данных в базе данных, если к этому вы будете часто обращаться.

Другие вопросы по тегам