获取android中所有已安装应用的名称、图标和包名

Posted

技术标签:

【中文标题】获取android中所有已安装应用的名称、图标和包名【英文标题】:Get the name, icon and package name of all the installed applications in android 【发布时间】:2015-11-25 18:26:58 【问题描述】:

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

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

问题是它显示包和类名作为混合,我无法获得图标。我想要的是向用户显示带有图标的手机上安装的所有应用程序的列表。而且我还需要能够使用List.OnItemClickListener 获取包名称。我假设使用具有相同定位的一组应用程序名称和包名称我可以做到这一点。但是我如何获得带有包名的应用程序图标和名称。最好作为我可以转换为 listView 对象的 Array 或 ArrayList 。如果有任何替代方法,甚至让我知道。我还是 android 的初学者。

请帮忙。

【问题讨论】:

获取安装的Apps包名列表,可以参考链接***.com/a/43734832/1252158 【参考方案1】:

请使用以下代码和说明:

//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;

    

有关更多信息,请尝试以下链接: http://javatechig.com/android/how-to-get-list-of-installed-apps-in-androidhttp://developer.android.com/reference/android/content/pm/PackageManager.html

【讨论】:

感谢 Androider。我会尝试并告诉你。 给点时间吧。这里已经很晚了。明天通知你 没问题,随心所欲。 我有一个小问题。它给了我一个错误 Activity must contain android.R.id.list 我实际上复制粘贴了所有代码 这是实现方式,也可以使用链接:javatechig.com/android/…【参考方案2】:

使用来自this 问题的this 链接。我得到了包名。然后使用来自this 问题的答案,我得到了包/应用程序图标。现在只要我想出阵列适配器来适应这个。我想它已经完成了。

我的代码:

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

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

【讨论】:

【参考方案3】:

从包名中获取应用图标图片

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

【讨论】:

以上是关于获取android中所有已安装应用的名称、图标和包名的主要内容,如果未能解决你的问题,请参考以下文章

如何提取android手机所有app的icon图标

Android得到已安装的应用程序信息!

Android—launcher 启动流程

Android—launcher 启动流程

以编程方式获取已安装的应用程序详细信息以打开 pdf

Android菜鸟笔记- 获取未安装的APK图标版本号包名名称是否安装安装打开