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

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

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

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

Ответы

Ответ 1

В последнее время я работал над чем-то подобным. Одна вещь, которую я скажу заранее, должна быть уверена и выполнить это в отдельном потоке - запрос информации о приложении SLOW. Ниже приведен список всех установленных приложений. Это будет включать в себя множество системных приложений, которые вам, вероятно, не интересуют.

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 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);
    }
}

EDIT: Кроме того, чтобы получить имя и значок для приложения (что, вероятно, самое длинное - я не проверил его на самом деле):

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

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