文档章节

Android 获取本地已安装的应用程序

徐昊
 徐昊
发布于 2016/11/03 12:18
字数 302
阅读 11
收藏 0

有一个需求获取本地指定的系统App和已经下载的App列表:

实现非常简单,首先获取本机已安装的App,然后把我们指定的系统App过滤掉,存入一个List集合中,然后把其他的系统App过滤掉,剩下的在放入,另外一个List集合中,组合就Ok。

贴下主要代码:

/**
 * Created by Xiho on 12:10
 * MyBlog: xuhao.tech
 * GitHub: github.com/git-xuhao
 * Function:
 */
public class AppUtils {

    public static final String PACKAGE_OTA="com.sunmi.ota";
    public static final String PACKAGE_MARKET="woyou.market";
    public static final String PACKAGE_HARD_WARE_KEEPER="com.woyou.hardwarekeeper";
    public static final String PACKAGE_UDH="com.woyou.udh";
    public static final String PACKAGE_SETTING="com.android.settings";

    /**
     * 过滤自定义的App和已下载的App
     * @param packageManager
     * @return
     */
    public static List<AppInfo> scanInstallApp(PackageManager packageManager,int filterType) {
        List<AppInfo> myAppInfos = new ArrayList<AppInfo>();
        List<AppInfo> mFilterApps = new ArrayList<AppInfo>();
        try {
            List<PackageInfo> packageInfos = packageManager.getInstalledPackages(0);
            for (int i = 0; i < packageInfos.size(); i++) {
                PackageInfo packageInfo = packageInfos.get(i);
                //过滤指定的app
                String tempPackageName=packageInfo.packageName;
                if(tempPackageName.equals(PACKAGE_OTA)||tempPackageName.equals(PACKAGE_MARKET)||tempPackageName.equals(PACKAGE_HARD_WARE_KEEPER)
                        ||tempPackageName.equals(PACKAGE_UDH)||tempPackageName.equals(PACKAGE_SETTING)){
                    AppInfo appInfo = new AppInfo();
                    appInfo.setAppName((String) packageInfo.applicationInfo.loadLabel(packageManager));
                    if (packageInfo.applicationInfo.loadIcon(packageManager) == null) {
                        continue;
                    }
                    appInfo.setAppIcon(packageInfo.applicationInfo.loadIcon(packageManager));
                    mFilterApps.add(appInfo);
                    continue;
                }

                //过滤掉系统app
                if ((ApplicationInfo.FLAG_SYSTEM & packageInfo.applicationInfo.flags) != 0) {
                    continue;
                }

                AppInfo appInfo = new AppInfo();
                appInfo.setAppName((String) packageInfo.applicationInfo.loadLabel(packageManager));
                if (packageInfo.applicationInfo.loadIcon(packageManager) == null) {
                    continue;
                }
                appInfo.setAppIcon(packageInfo.applicationInfo.loadIcon(packageManager));
                myAppInfos.add(appInfo);
            }
            myAppInfos.addAll(mFilterApps);
        } catch (Exception e) {
           e.printStackTrace();
        }
        return myAppInfos;
    }
由于内容很简单,就不上其他源码了。

© 著作权归作者所有

徐昊

徐昊

粉丝 0
博文 84
码字总数 174446
作品 2
杨浦
Android工程师
私信 提问
浅入浅出 Android 安全:第一章 Android

第一章 Android 来源:Yury Zhauniarovich | Publications 译者:飞龙 协议:CC BY-NC-SA 4.0 Android 安全架构的理解不仅帮助我了解 Android 的工作原理,而且为我开启了如何构建移动操作系...

apachecn_飞龙
2016/11/27
0
0
Android 面试必备 - 系统、App、Activity 启动过程

前言 最近准备更新 Android 面试必备基础知识系列,有兴趣的可以关注我的微信公众号 stormjun94,有更新时,第一时间会在微信公众号上面发布,同时,也会同步在 GitHub 上面更新,如果觉得对...

stormjun94
08/09
0
0
一个应用程序和另一个应用程序apk文件信息

应用场景:对于我们自己开发的两个应用程序,一个应用程序的包名为 aa.bb.cc,软件名叫a,它的入口Activity为 aaActivity(入口activity就是在AndroidManifest.xml中标签——<action android...

lxp198837
2012/06/27
182
0
Anbox:在 Linux 上运行 Android 应用程序的简单方式

Android 模拟器允许我们直接从 Linux 系统上运行我们最喜欢的 Android 应用程序或游戏。对于 Linux 来说,有很多的这样的 Android 模拟器,在过去我们介绍过几个此类应用程序。 你可以通过导...

作者: Magesh Maruthamuthu
05/12
0
0
Windows上搭建Android开发环境详细教程

  在windows安装Android的开发环境不简单也说不上算复杂,本文写给第一次想在自己Windows上建立Android开发环境投入Android浪潮的朋友们,为了确保大家能顺利完成开发环境的搭建,文章写的...

jiatin
2016/04/10
563
8

没有更多内容

加载失败,请刷新页面

加载更多

Vue学习01

我的github地址https://github.com/zhangl-w/VueDemo/tree/master/VueDemo 一、基本代码 1.导入Vue包,导包后浏览器内存中会产生一个Vue的构造函数 2.创建一个Vue实例 3.el 表示,当前我们n...

zhang_l
28分钟前
5
0
centos7.x 安装harbor 1.9.3

首先必须安装docker和docker-compose 推荐使用pip安装docker-compose,因为pip可以为你自动对应版本问题 1.docker安装 curl -sfL https://get.docker.io | sh -systemctl start docker 2.d...

Elson
28分钟前
5
0
每天积累一点:射频阻抗

对我来说,阻抗是一个非常令人困惑的概念(术语)。以下是我第一次学习阻抗概念时脑海中出现的许多问题。同样的问题也让你烦恼吗? 当我第一次在高中物理中学习“电阻(Resistance )”时,它...

demyar
29分钟前
5
0
人生苦短?试试Groovy进行单元测试

如果您今天正在编程,那么您很可能听说过单元测试或测试驱动的开发过程。我还没有遇到一个既没有听说过又没有听说过单元测试并不重要的程序员。在随意的讨论中,大多数程序员似乎认为单元测试...

八音弦
31分钟前
4
0
GMAT词汇怎么背?简单记忆法让你不再害怕背单词

GMAT考试对于词汇的掌握和使用要求高,可以说是GMAT考试的难关之一。面对学术化专业化难度颇高的词汇,考生难免会产生畏惧退缩的情绪。GMAT难词怎么背?有没有轻松背单词的方法呢?下面小编就为...

bole6
32分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部