Android中如何正确的获得所有App列表

原创 2016年08月31日 11:45:43

我们经常会遇到这样的需求:列出手机中所有能打开的App。此时我们不需要列出那些无法打开的app,也就是没有Activity的。网上有一些方法,都是过滤系统app的方法,将短信、电话这些App都过滤掉了,其实只要使用下面代码就行了:

private void queryFilterAppInfo() {
    PackageManager pm = this.getPackageManager();
    // 查询所有已经安装的应用程序
    List<ApplicationInfo> appInfos= pm.getInstalledApplications(PackageManager.GET_UNINSTALLED_PACKAGES);// GET_UNINSTALLED_PACKAGES代表已删除,但还有安装目录的
    List<ApplicationInfo> applicationInfos=new ArrayList<>();

    // 创建一个类别为CATEGORY_LAUNCHER的该包名的Intent
    Intent resolveIntent = new Intent(Intent.ACTION_MAIN, null);
    resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER);

    // 通过getPackageManager()的queryIntentActivities方法遍历,得到所有能打开的app的packageName
    List<ResolveInfo>  resolveinfoList = getPackageManager()
            .queryIntentActivities(resolveIntent, 0);
    Set<String> allowPackages=new HashSet();
    for (ResolveInfo resolveInfo:resolveinfoList){
        allowPackages.add(resolveInfo.activityInfo.packageName);
    }

    for (ApplicationInfo app:appInfos) {
//            if((app.flags & ApplicationInfo.FLAG_SYSTEM) <= 0)//通过flag排除系统应用,会将电话、短信也排除掉
//            {
//                applicationInfos.add(app);
//            }
//            if(app.uid > 10000){//通过uid排除系统应用,在一些手机上效果不好
//                applicationInfos.add(app);
//            }
        if (allowPackages.contains(app.packageName)){
            applicationInfos.add(app);
        }
    }
    mApplicationInfos=applicationInfos;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

如何获得数据库里所有表的名字

如何获得数据库里所有表的名字 平时我们操作比较多的都是表里的数据,也许突然有一天会需要把所有表的名字都列出来看一看——比如,你的论坛是按每个版块一个表来管理的,这时候你要在首页列出各版块的名字。应该...

少说随便,多思考

本文转载自 http://www.showonne.com/2015/07/13/%E5%B0%91%E8%AF%B4%E9%9A%8F%E4%BE%BF-%E5%A4%9A%E6%80%9D%E8%...

精选:深入理解 Docker 内部原理及网络配置

网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。

如何正确获得Android内外SD卡路径

如何正确获得Android内外SD卡路径 原文路径:http://blog.fidroid.com/post/android/ru-he-zheng-que-huo-de-androidnei-wa...

如何正确获得Android内外SD卡路径

外置sd卡路径,也许很多同学在平时的工作中并不会用到,因为现在很多机型都不支持外置sd卡(这也是Google目标),所以并不用考虑外置sd卡的路径问题。除了开发文件管理类的应用之外,其他应用使用 En...

如何正确获得Android内外SD卡路径

忘了这篇文章是在哪里看到了,当时就copy保存了下来,今天转载出来下。 外置sd卡路径,也许很多同学在平时的工作中并不会用到,因为现在很多机型都不支持外置sd卡(这也是Google目标),所以并不用考...

如何正确地刷牙?

1.选择牙刷 刷头不宜过大,主要选刷毛细而软的尼龙丝(回弹力好,吸水性差,耐磨性强),刷毛顶端磨毛、椭圆形的,刷柄便于把握。 上面是百度百科的陈年资料,个人经验现在大型超市里卖的基本都符合要求,宾馆里...

如何正确的获得一个view的宽和高

我们都知道在onCreate()里面获取控件的高度是0,这是为什么呢?我们来看一下示例: 首先我们自己写一个控件,这个控件非常简单: 1 2 3 ...

android 得到所有安装的app

最近在看自己以前写的一些项目代码,看到以前熟悉的代码,长时间不复习都有些陌生了,所以做个记录,以便 后面用的时候查找起来方便。 下面的代码是查找设备上已经安装了哪些app: Intent main...

如何获得正确的基数估计值

原文:http://www.oracle.com/technetwork/issue-archive/2013/13-jan/o13asktom-1886639.html I have a que...

如何获取APP上面的所有图片(iOS Images Extractor)

有时候我们看到一些应用程序上面的图片非常喜欢,想把他拿过来放在自己的App上面使用,使用Charles抓包工具的话第一点麻烦不说,而且有的应用网址加密了你根本就获取不到图片。  接下来介绍的iOS I...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)