首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用PackageManager获取已安装的软件包?

如何使用PackageManager获取已安装的软件包?
EN

Stack Overflow用户
提问于 2018-12-04 14:48:19
回答 1查看 299关注 0票数 0

我想得到一个已安装的应用程序的列表,但只有那些有一个图标和可启动的。我正在制作一个启动器应用程序,并使用这个:

代码语言:javascript
运行
复制
  private List<AppList> getInstalledApps() {
    List<AppList> res = new ArrayList<AppList>();
    List<PackageInfo> packs = getPackageManager().getInstalledPackages(0);
    for (int i = 0; i < packs.size(); i++) {
        PackageInfo p = packs.get(i);
        if ((isSystemPackage(p) == false)) {
            String appName = p.applicationInfo.loadLabel(getPackageManager()).toString();
            Drawable icon = p.applicationInfo.loadIcon(getPackageManager());
            String package_name = p.applicationInfo.packageName;
            res.add(new AppList(appName, package_name, icon));
        }
    }

private boolean isSystemPackage(PackageInfo pkgInfo) {
    return ((pkgInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0) ? true : false;
}

问题是,要过滤掉不可启动的应用程序,我必须过滤掉系统应用程序,这不是最好的解决方案,因为它也会过滤掉这些应用程序:相机,日历,计算器等。

EN

回答 1

Stack Overflow用户

发布于 2018-12-04 15:03:17

您可以通过以下方式检查应用程序是否可启动

代码语言:javascript
运行
复制
packageManager.getLaunchIntentForPackage(packageName) != null

对于图标,您可以检查是否

info.loadIcon(packageManager) != null

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53607151

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档