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;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

得到android所有已经安装的应用程序的uid代码

public List getUids() {         List uidList = new ArrayList();         pm = getPackageManager(); ...

Android 如何获取最顶端的Top Activity

Android 如何获取最顶端的Top Activity, 见如下代码: public static class TopActivityInfo { public String...

Android6.0以后,怎样获取当前运行的app

在Android5.0,即Lollipop(api level 21)之前,大家都幸福的使用如下代码来获得当前运行的app,即所谓的top Activity: ActivityManager acti...
  • yishifu
  • yishifu
  • 2016年08月03日 15:35
  • 5581

Launcher里获取当前的所有的app和widget的包名和启动activity类名

在LauncherModel.loadAllApps()末尾里加入log:             final ArrayList added = mBgAllAppsList.added;     ...
  • yefl007
  • yefl007
  • 2015年10月23日 14:42
  • 430

安卓Launcher之获取手机安装的应用列表

Launcher中最主要的就是获取所有应用列表的入口,现在通过PackageInfo和ResolveInfo两种方法获取所有的应用列表,并且进行打开应用...

Android刮刮卡原理及实现

本篇讲的内容比较简单,就是实现一个刮刮卡的效果,上面是一个蒙层,下面是你要刮出来的图像。我看到有很多相关的博客,但是还是决定自己写一篇。原因是对我这种菜鸟来说,刚开始做的时候,因为画错了画布,一直都显...

android过滤第三应用列表

转载自:http://blog.csdn.net/santicom/article/details/7465751 调用所有匹配的第三应用: [java] view plain...
  • yy228
  • yy228
  • 2012年07月20日 16:19
  • 722

Android app系统设置界面 数据的保存与读取 SharedPreferences 的正确使用

很开心的是经历过两个多月的努力,项目在11月份即将要交付使用,基础功能已经完成,剩下的是系统设定界面没有开发完毕,如下图:        很显然要实现的功能是几个界面要显示很多数据,要依据某...

Android app如何正确读写系统sys设备节点

Android app如何正确读写系统sys设备节点版权声明:本文为博主原创文章,允许转载,但请保留出处。Android 设备节点Android基于Linux内核。设备节点文件是设备驱动的逻辑文件,可...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android中如何正确的获得所有App列表
举报原因:
原因补充:

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