美文网首页Android知识Android开发经验谈程序员
Android中如何正确的获得所有App列表

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

作者: 十个雨点 | 来源:发表于2016-08-31 10:42 被阅读4860次

转载注明出处:简书-十个雨点

我们经常会遇到这样的需求:列出手机中所有能打开的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;
}
具体代码可以参考Bigbang项目的WhiteListActivity的处理。

相关文章

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

    转载注明出处:简书-十个雨点 我们经常会遇到这样的需求:列出手机中所有能打开的App。此时我们不需要列出那些无法打...

  • Android获取所有依赖库

    Android获取所有依赖库 命令方式 gradle :app:dependencies输出列表展示了所有conf...

  • ListView 和 RecyclerView 的对比分析

    Android app中通过列表展示数据是非常常见的场景。 例如, IM类会话列表/消息列表就会使用列表进行数据展...

  • Python经典面试题

    Python中5种标准数据类型有哪些? Python中的元组和列表有什么区别? 如何从字典中获得所有的keys? ...

  • App测试中Android和IOS测试区别

    App测试中ios和Android有哪些区别呢? 1 . Android长按home键呼出应用列表和切换应用,然后...

  • NowView 1.0+ README

    Now 一款Android图文精选app,通过抓取网页获得图文列表。目前包含站酷(Zcool)精选、国家地理(Na...

  • app测试中,ios和android的区别

    app测试中ios和Android的区别: 1、Android长按home键呼出应用列表和切换应用,然后右滑则终止...

  • app测试面试题

    1、app测试中ios和Android的区别: 1、Android长按home键呼出应用列表和切换应用,然后右划终...

  • app测试中ios和Android的区别

    app测试中ios和Android的区别: 1、Android长按home键呼出应用列表和切换应用,然后右滑则终止...

  • 获取已安装手机列表

    Android 获取已安装应用列表 调研 Android 如何完整的获取到用户已安装应用列表

网友评论

    本文标题:Android中如何正确的获得所有App列表

    本文链接:https://www.haomeiwen.com/subject/uvpqettx.html