Java 获取android中所有已安装应用程序的名称、图标和软件包名称

Java 获取android中所有已安装应用程序的名称、图标和软件包名称,java,android,listview,android-intent,package-managers,Java,Android,Listview,Android Intent,Package Managers,我希望能够得到字符串包名称和图标的所有应用程序安装在我的手机上。 我所做的: 浏览并找到此解决方案 final Intent mainIntent = new Intent(Intent.ACTION_MAIN, null); mainIntent.addCategory(Intent.CATEGORY_LAUNCHER); final List pkgAppsList = this.getPackageManager().queryInten

我希望能够得到字符串包名称和图标的所有应用程序安装在我的手机上。 我所做的: 浏览并找到此解决方案

final Intent mainIntent = new Intent(Intent.ACTION_MAIN, null); 
            mainIntent.addCategory(Intent.CATEGORY_LAUNCHER); 
            final List pkgAppsList = this.getPackageManager().queryIntentActivities(mainIntent, 0);
            for(int counter = 0; counter<=pkgAppsList.size()-1;counter++)
            {
                    Log.e("TAG", pkgAppsList.get(counter).toString());
  } 
final Intent maintent=新意图(Intent.ACTION\u MAIN,空);
mainIntent.addCategory(Intent.CATEGORY_启动器);
最终列表pkgAppsList=this.getPackageManager().QueryInputActivities(mainIntent,0);

对于(int counter=0;counter请使用以下代码和说明:

//check this code with some hard work then you will rock
 List<PackageInfo> apps = getPackageManager().getInstalledPackages(0);

    ArrayList<AppInfo> res = new ArrayList<AppInfo>();
    for(int i=0;i<apps.size();i++) {
                    PackageInfo p = apps.get(i);

                    AppInfo newInfo = new AppInfo();
                    newInfo.appname = p.applicationInfo.loadLabel(getPackageManager()).toString();
                    newInfo.pname = p.packageName;
                    newInfo.versionName = p.versionName;
                    newInfo.versionCode = p.versionCode;
                    newInfo.icon = p.applicationInfo.loadIcon(getPackageManager());
                    res.add(newInfo);
                    }
                }

    class AppInfo {
        String appname = "";
        String pname = "";
        String versionName = "";
        int versionCode = 0;
        Drawable icon;

    }
//通过一些艰苦的工作来检查这段代码,然后你就会摇滚起来
列出应用程序=getPackageManager()。getInstalledPackages(0);
ArrayList

使用问题中的链接。我得到了程序包名称。然后使用问题中的答案我得到了程序包/应用程序图标。现在,只要我计算出数组适配器以适应此情况。我想现在就完成了

我的代码:

final PackageManager pm = getPackageManager();
List<applicationinfo> packages = pm.getInstalledApplications(PackageManager.GET_META_DATA);
for (ApplicationInfo packageInfo : packages) {
//The log is not required so if you want to and I recommend during release you remove that statement.
Log.d(TAG, "Installed package :" + packageInfo.packageName);
Drawable icon = getPackageManager().getApplicationIcon(packageInfo.packageName)
imageView.setImageDrawable(icon);
final PackageManager pm=getPackageManager();
List packages=pm.getinstalledApplication(PackageManager.GET_元数据);
对于(ApplicationInfo packageInfo:packages){
//该日志不是必需的,所以如果您想要,我建议您在发布期间删除该语句。
Log.d(标签,“已安装的软件包:”+packageInfo.packageName);
Drawable icon=getPackageManager().GetApplicationCon(packageInfo.packageName)
imageView.setImageDrawable(图标);

希望这也能帮助所有读者。

从软件包名称中获取应用程序图标图像

Drawable appicon = getPackageManager().getApplicationIcon("com.example.pkgname");
img.setImageDrawable(appicon);

谢谢Androider。我会尝试一下并让你知道。给点时间。现在已经很晚了。我会让你知道明天没有问题,随你的便。我有一个小问题。它给我一个错误活动必须包含
android.R.id.list
,我几乎复制粘贴了所有代码。这是实现的方法,你也可以使用link:要获取已安装应用程序包名称的列表,您可以参考链接