`
zhouxiaoli521
  • 浏览: 554371 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android 过滤掉系统自带的应用程序

阅读更多

今天需要获得已安装应用程序的信息,过滤掉已系统自带的应用程序。我在网上看了看,有人说通过
if (p.versionName == null) {
                continue;
            }
可以过滤掉系统自带的应用程序,我尝试了一下,不行。

查看源码,InstalledAppDetails.java应用程序的详细资料的类(比如我们进入系统的应用程序列表中,点击某个应用程序后,就会显示一个关于这个应用程序的详细列表),在这个类中,可以看到这么这个函数setAppBtnState:这个函数的功能设定详细列表中的几个按钮的值信息。
在这个函数中看到

if  ((mAppInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0)
{
            if ((mAppInfo.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0) {
                mAppButtonState = AppButtonStates.FACTORY_RESET;
                mAppButtonText = getText(R.string.app_factory_reset);
            } else {
                if ((mAppInfo.flags & ApplicationInfo.FLAG_ALLOW_CLEAR_USER_DATA) == 0) {
                    // Hide button if diableClearUserData is set
                    mAppButtonState = AppButtonStates.NONE;
                    visible = false;
                } else {
                    mAppButtonState = AppButtonStates.CLEAR_DATA;
                    mAppButtonText = getText(R.string.clear_user_data_text);
                }
            }
        } else {
            mAppButtonState = AppButtonStates.UNINSTALL;
            mAppButtonText = getText(R.string.uninstall_text);
        }

上面标红的一句,if  ((mAppInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0)就是用来判断应用程序是不是系统自带的。这样就可以通过这句来过滤掉系统自带的应用程序,例子如下

List<PackageInfo> packs = context.getPackageManager().getInstalledPackages(0);
        int count = packs.size() - 1;
        for (int i = 0; i <= count; i++) {
            PackageInfo p = packs.get(i);
          
            if (p.versionName == null) {
                continue;
            }
            ApplicationInfo itemInfo = p.applicationInfo;
            if  ((itemInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0)
                continue;
         
         ...............

        }

 

 

http://www.iteye.com/topic/840411

分享到:
评论

相关推荐

    Android应用程序批量删除

    【注意】本工具只能删除 /data/data下的应用!即 预装的软件不能卸载!因为权限不足!...使用linux sh脚本 调用系统自带卸载 命令pm,并进行过滤,实现批量卸载!即 pm uninstall com.xxx.xx的 多次执行!

    Android 3D游戏开发技术宝典-OpenGL ES 2.0 (吴亚峰) 源代码

    1.4 hello android应用程序的开发 11 1.4.1 第一个android应用程序 12 1.4.2 android应用程序的项目结构 14 1.4.3 android应用程序的调试 16 1.4.4 实际设备的联机调试 18 1.5 android应用程序运行...

    小米文件管理器 vMiXplorer

    固定备份APK文件在用户和系统应用程序分类 动漫按钮动作栏的底部模式时 添加选项来禁用刷卡向左和向右的第一在最后一个标签 添加标签栏和菜单选项移到 增加了一些新选项选项卡菜单 提高我们执行干净安装应用...

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    Activity Activity是一个应用程序组件,提供一个屏幕,用户可以用来交互为了完成某项任务,是一个负责与用户交互的组件 SSH 为 Struts+Spring+Hibernate的一个集成框架,是目前较流行的一种Web应用程序开源框架。...

    VS2017中文安装包 百度云盘

    Visual Studio 2017 可支持 C#、C++、Python、Visual Basic、Node.js、HTML、JavaScript 等各大编程语言,不仅可编写 Windows 10 UWP 通用程序,甚至还能开发 iOS、Android 移动平台应用。 VS2017 VS2017 甚至还...

    JAVA上百实例源码以及开源项目

     Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,不一定非要局限于游戏吧,RES、SRC资源都有,都在压缩包内。 Java zip压缩包查看程序源码 1个目标文件 摘要:Java源码...

    JAVA上百实例源码以及开源项目源代码

    Java 3DMenu 界面源码 5个目标文件 内容索引:Java源码,窗体界面,3DMenu Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,不一定非要局限于游戏吧,RES、SRC资源都有,都...

    java开源包1

    Sidekiq 为 Rails 3 应用程序提供一个高效的消息队列系统。 Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式...

    java开源包11

    Sidekiq 为 Rails 3 应用程序提供一个高效的消息队列系统。 Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式...

    java开源包2

    Sidekiq 为 Rails 3 应用程序提供一个高效的消息队列系统。 Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式...

    java开源包3

    Sidekiq 为 Rails 3 应用程序提供一个高效的消息队列系统。 Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式...

    java开源包6

    Sidekiq 为 Rails 3 应用程序提供一个高效的消息队列系统。 Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式...

    java开源包5

    Sidekiq 为 Rails 3 应用程序提供一个高效的消息队列系统。 Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式...

    java开源包10

    Sidekiq 为 Rails 3 应用程序提供一个高效的消息队列系统。 Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式...

    java开源包4

    Sidekiq 为 Rails 3 应用程序提供一个高效的消息队列系统。 Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式...

    java开源包8

    Sidekiq 为 Rails 3 应用程序提供一个高效的消息队列系统。 Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式...

    java开源包7

    Sidekiq 为 Rails 3 应用程序提供一个高效的消息队列系统。 Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式...

    java开源包9

    Sidekiq 为 Rails 3 应用程序提供一个高效的消息队列系统。 Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式...

    java开源包101

    Sidekiq 为 Rails 3 应用程序提供一个高效的消息队列系统。 Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式...

Global site tag (gtag.js) - Google Analytics