Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在android中显示已安装的应用程序?_Java_Android_Android Listview_Package_Package Managers - Fatal编程技术网

Java 如何在android中显示已安装的应用程序?

Java 如何在android中显示已安装的应用程序?,java,android,android-listview,package,package-managers,Java,Android,Android Listview,Package,Package Managers,使用此代码: final PackageManager pm = getActivity().getPackageManager(); //get a list of installed apps. List<ApplicationInfo> packages = pm.getInstalledApplications(PackageManager.GET_META_DATA); for (ApplicationInfo packag

使用此代码:

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)); 
final PackageManager pm=getActivity().getPackageManager();
//获取已安装应用程序的列表。
List packages=pm.getinstalledApplication(PackageManager.GET_元数据);
对于(ApplicationInfo packageInfo:packages){
Log.d(标签,“已安装的软件包:”+packageInfo.packageName);
Log.d(标签,“启动活动:”+pm.getLaunchIntentForPackage(packageInfo.packageName));
我可以在logcat软件包信息等中显示,但我想在我的活动中显示已安装应用的列表,如果可能的话,显示其图标和应用程序的名称。是否可能? 附言:我正在使用片段

请参见此演示:

以下内容应用于获取应用程序列表

Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
applications = mPackageManage.queryIntentActivities(intent, PackageManager.GET_META_DATA);
试着这样,

首先为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;
   }
公共列表getInstalledApplication(){ PackageManager appInfo=getPackageManager(); List listInfo=appInfo.GetInstalledApplication(0); 排序(listInfo,新的ApplicationInfo.DisplayNameComparator(appInfo)); 列表数据=新的ArrayList(); 对于(int index=0;index 现在,您可以在适配器类中使用此列表


希望这会对您有所帮助。

可能的副本一点也不。.我不想启动应用程序,但只显示一个带有应用程序图标及其名称的列表。.您可以使用Alex Lockwood Loaders。其中的示例应用程序显示应用程序列表。完整教程但我必须将此代码放在哪里?我的意思是,我需要一个listview,对吗?因此,我必须创建一个适配器类吗无法在listview中直接插入这些值?@David\D您将在listview中显示这些值,因此您需要适配器,以便可以用图标显示应用程序名称。