Как отображать установленные приложения в андроиде?

Используя этот код:

final PackageManager pm = getActivity().getPackageManager();
        //get a list of installed apps.
        List<ApplicationInfo> packages = pm.getInstalledApplications(PackageManager.GET_META_DATA);

        for (ApplicationInfo packageInfo : packages) {
            Log.d(TAG, "Installed package :" + packageInfo.packageName);
            Log.d(TAG, "Launch Activity :" + pm.getLaunchIntentForPackage(packageInfo.packageName)); 

Я могу отображать в информации о пакете logcat и т. Д. Но я хочу отобразить в своей активности список установленных приложений с его значком, если это возможно, и именем приложения. Является ли это возможным? PS: я использую фрагменты


person David_D    schedule 22.10.2013    source источник
comment
возможный дубликат Как запускать приложения из другого приложения?   -  person CommonsWare    schedule 22.10.2013
comment
совсем нет.. Я не хочу запускать приложение, а только показывать список со значком приложения и его названием..   -  person David_D    schedule 22.10.2013
comment
Вы можете использовать руководство по загрузчикам Alex Lockwood. Пример приложения в нем показывает список приложений.   -  person Bracadabra    schedule 22.10.2013
comment
полное руководство theopentutorials.com /учебники/android/listview/   -  person Maulik Sheth    schedule 22.10.2013


Ответы (3)


Посмотрите эту демонстрацию: Круговой запуск

person resource8218    schedule 22.10.2013

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

Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
applications = mPackageManage.queryIntentActivities(intent, PackageManager.GET_META_DATA);
person the100rabh    schedule 22.10.2013
comment
но где я должен поместить этот код? я имею в виду, мне нужен список прав? - person David_D; 22.10.2013

Попробуйте так,

Сначала создайте модель для PackageItem.

public class PackageItem {

        private Drawable icon;

        private String name;

        private String packageName;

        public String getPackageName() {
            return packageName;
        }

        public void setPackageName(String packageName) {
            this.packageName = packageName;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public Drawable getIcon() {
            return icon;
        }

        public void setIcon(Drawable icon) {
            this.icon = icon;
        }
    }

Шаг 2)

Это даст вам список всех устанавливаемых приложений с названием приложения, значком и пакетом, а также

public List<PackageItem> getInstalledApplication(){

PackageManager appInfo = getPackageManager();
            List<ApplicationInfo> listInfo = appInfo.getInstalledApplications(0);
            Collections.sort(listInfo, new ApplicationInfo.DisplayNameComparator(appInfo));

            List<PackageItem> data = new ArrayList<PackageItem>();

            for (int index = 0; index < listInfo.size(); index++) {
                try {
                    ApplicationInfo content = listInfo.get(index);
                    if ((content.flags != ApplicationInfo.FLAG_SYSTEM) && content.enabled) {
                        if (content.icon != 0) {
                            PackageItem item = new PackageItem();
                            item.setName(getPackageManager().getApplicationLabel(content).toString());
                            item.setPackageName(content.packageName);
                            item.setIcon(getPackageManager().getDrawable(content.packageName, content.icon, content));
                            data.add(item);
                        }
                    }
                } catch (Exception e) {

                }
            }
      return data;
   }

Теперь вы можете использовать этот список в своем классе адаптера,

Надеюсь, что это поможет вам.

person Amit Gupta    schedule 22.10.2013
comment
и, таким образом, я должен создать класс адаптера? я не могу вставить эти значения в список напрямую? - person David_D; 22.10.2013
comment
@David_D вы покажете его в ListView, поэтому вам нужен адаптер, чтобы вы могли представить имя приложения с помощью значка. - person Amit Gupta; 22.10.2013