当前位置: 首页 > 知识库问答 >
问题:

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

白弘伟
2023-03-14

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

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

问题是,它将包和类名混合显示,而我无法获取图标。我想要的是向用户显示手机上安装的所有应用程序的列表和图标。我还需要能够获得带有列表的包名。McClickListener。我假设使用一系列应用程序名和包名,它们的位置相同,我就可以做到这一点。但是我怎样才能用软件包名获得应用程序图标和名称呢。最好是作为数组或ArrayList,我可以将其转换为listView对象。如果有其他方法,请告诉我。我还是Android的初学者。

请帮忙。

共有3个答案

郎建章
2023-03-14

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

Drawable appicon = getPackageManager().getApplicationIcon("com.example.pkgname");
img.setImageDrawable(appicon);
倪鸿禧
2023-03-14

使用这个问题的链接。我知道包裹的名字。然后使用这个问题的答案,我得到了软件包/应用程序图标。现在,只要我找到能适应这种情况的阵列适配器。我想那就结束了。

我的代码:

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

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

纪辰沛
2023-03-14

请使用以下代码和说明:

//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-android http://developer.android.com/reference/android/content/pm/PackageManager.html

 类似资料:
  • 我想知道一个应用程序的包名,我只知道那个应用程序的应用程序名。假设我想知道一个电子邮件应用程序的包名,只是它的名字,然后如何得到它 我只知道应用程序名。 这是代码,以获得所有的应用程序的包名称,但我需要知道特定的应用程序。

  • 在我的模拟器中,当我尝试以编程方式升级apk时。我得到:

  • 问题内容: 如何通过goinstall列出所有已安装的软件包?我需要将所有安装在一台计算机上的软件包重新安装到另一台计算机上。 问题答案: $ GOROOT / goinstall.log下有一个列表。如果要将所有软件包安装在另一台计算机上,只需复制文件并运行, goinstall将读取该文件并安装其中列出的所有软件包。

  • 我尝试过各种各样的解决方案,从堆栈溢出没有运气。我想要什么。 我知道不同应用程序的包名 例如,我有一个包名。如何获取此应用程序图标并在ImageView中显示?

  • 我试图做一个应用程序,自动启动你选择的音乐播放器,当耳机插入。为了工作,当用户插入耳机时,我想在他们的手机上显示所有的应用程序,这样他们就可以点击默认的音乐播放器,如狂想曲、Spotify等。因为每个人都有不同的音乐应用程序。我不能使用一个意图来启动仅仅的包名称,因为它可能对每个人都不一样。有没有一个意图显示所有的应用程序,以便用户可以选择他们的默认应用程序。谢谢。 我想的另一种方法是在手机上的列

  • 我最近制作了一个新应用程序,只有一个最小的存根Mainactive。当我使用Android Studio和gradle项目运行该应用程序时,该应用程序会失败并出现以下消息: 我检查了整个项目文件夹树,但在任何地方都找不到“myapp”这个词。这是我过去使用过的包名称,但后来更改了。我想知道这是从哪里来的?