reference to  : http://blog.csdn.net/luojiusan520/article/details/47696891

getinstalledpackages()的方法获取到安装应用信息 ,他接收一个int flags的值,然后在网上查询资料全是 将Int  值 设置为0  即比如

 

PackageManager manager = context.getPackageManager();// 得到包的管理者
List<PackageInfo> installedPackages = manager.getInstalledPackages(0);

 

本想查看源代码看看0是什么参数。结果就出现了问题,参数如下

public static final int GET_ACTIVITIES              = 0x00000001;
public static final int GET_RECEIVERS               = 0x00000002;
public static final int GET_SERVICES                = 0x00000004;
public static final int GET_PROVIDERS               = 0x00000008;
...0x00000010;
0x00000020;
0x00000040;
0x00000040;
0x00000080;
0x00000100;
0x00000200;
0x00000400;
0x00000800;
0x00001000;
0x00002000;
0x00004000;

            每个flag参数的意思,见名思意是用来获取相应的包信息,全部是16进制表示的int的数。但是疑惑没有0,网上查询没有相应的信息,于此思考许久留下笔记留下印象。

通过观察源代码帮组我分析的信息如下:

(1)观察源代码注释flags Additional option flags. Use any combination of   ....flag       

 方法前后文英文大意:额外信息通过flag获得,使用flag的任何组合。

    看到这条源代码组合(combination )二字其实问题就解决一半了。            意思是可以用来组合 任意的flag ,添加任何flag到参数中;

 

(2)通过观察其他 参数 既static final int 的值 

比如:

public static final int COMPONENT_ENABLED_STATE_ENABLED = 1;

public static final int COMPONENT_ENABLED_STATE_DISABLED = 2;

public static final int COMPONENT_ENABLED_STATE_DISABLED_USER = 3;

为何都是设置的 10进制的值,,看到这里我想我已经解决了问题,

 

(3)分析方法参数的值,换算为2进制;

依次为:00000001       00000010             00000100        00001000    ...................    这样设置的好处就是 任意组合的特征码都是唯一的。不会参生混淆

比如               16+8 = 24                24只能由参数中此两个数而得到。

32+2=34                     同理

64 +8=72                 同理            

  

如果flag采用 十进制1  ,2,3,4,5,6,7的方式进行 处理的话      当方法中数为 特定的数时候可能出现不同的组合,所以就不能使用此方式,因为计算机是不会智能处理人的需求的。

 

得出我的结论如下:

参数0 是   表示不接受任何flag信息,当然也能够返回得到一些基本的包信息!,但是如 PERMISSIONS  ,RECEIVERS  等等就返回不了,如果flag值不匹配 而方法中强行获取相对应的值,返回值为Null,已经做过测试

延伸: PackageManager.GET_ACTIVITIES+ PackageManager.GET_RECEIVERS    等于 3; 参数中填入3则得到这两个的flag对应的信息。

注意点 :PackageManager.GET_ACTIVITIES|
PackageManager.
GET_ACTIVITIES    和上为一样的效果。 因为相或的话 同位只要有一个1则为1,

[Android] 关于getinstalledpackages参数的分析的更多相关文章

  1. [Android]Android系统启动流程源码分析

    以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/5013863.html Android系统启动流程源码分析 首先 ...

  2. Android PopupWindow的使用和分析

    Android PopupWindow的使用和分析 PopupWindow使用 PopupWindow这个类用来实现一个弹出框,可以使用任意布局的View作为其内容,这个弹出框是悬浮在当前activi ...

  3. android关于AndroidManifest.xml详细分析

    http://my.eoe.cn/1087692/archive/5927.html 一.关于AndroidManifest.xmlAndroidManifest.xml 是每个android程序中必 ...

  4. Gradle之Android Gradle Plugin 主要 Task 分析(三)

    [Android 修炼手册]Gradle 篇 -- Android Gradle Plugin 主要 Task 分析 预备知识 理解 gradle 的基本开发 了解 gradle task 和 plu ...

  5. Android中Scroller类的分析

    今天看了一下项目中用到的ViewFlow控件,想弄明白其工作原理.从头开始分析,卡在"滚动"这儿了. 做android也快两年了,连最基本的滚动都不熟悉,真是惭愧...遂网上找资料 ...

  6. 阿里早期Android加固代码的实现分析

    本文博客地址:http://blog.csdn.net/qq1084283172/article/details/78320445 看雪上有作者(寒号鸟二代)将阿里移动早期的Android加固进行了逆 ...

  7. 1.Android 视图及View绘制分析笔记之setContentView

    自从1983年第一台图形用户界面的个人电脑问世以来,几乎所有的PC操作系统都支持可视化操作,Android也不例外.对于所有Android Developer来说,我们接触最多的控件就是View.通常 ...

  8. (转)Android 系统 root 破解原理分析

    现在Android系统的root破解基本上成为大家的必备技能!网上也有很多中一键破解的软件,使root破解越来越容易.但是你思考过root破解的 原理吗?root破解的本质是什么呢?难道是利用了Lin ...

  9. 列表页url参数格式分析【求指教】

    运营对列表页url制定静态化模式,与区区观点相悖.遂请大家指教点解. 动态参数包含6个,分别是: 1认证(有机),2品类(水果),3地区(丰台),4状态(众筹中),5排序(评分),6分页 使用状态非常 ...

随机推荐

  1. Eclipse中集成Ant配置 (转)

    目前的Eclipse都集成了ant,本文图示如何在eclipse下使用ant. 1.新建Java Project-新建Java文件HelloWorld.java HelloWorld.java pac ...

  2. int (*p)[4] 与 int* p[4]

    碰到一道题: ][] = {,,,,,,,,,,,}; ]; ] = (a+); cout<<*(p+)<<endl; cout<<(*ptr+)[]<< ...

  3. SQL server 语句新建用户、对用户授权、删除用户实例

    Grant select on tb to db_user --给db_user用户授权 tb表 查询权限 一.命令操作 USE mydb GO --1. 新建测试用户 --1.1 添加登录用户和密码 ...

  4. Keepalived高可用集群介绍

    1.Keepalived服务介绍 Keepalived起初是专为LVS设计的,专门用来监控LVS集群系统中各个服务节点的状态,后来又加入了VRRP的功能,因此除了配合LVS服务外,也可以为其他服务(n ...

  5. LVS NAT模式

    LVS-NAT 三台虚拟机都是centos 6.5 关闭防火墙和selinux 角色 IP地址 备注 LVS负载调度器 eth0:192.168.119.128(内网) eth1:192.168.94 ...

  6. AChartEngine方法的使用及事件汇总

    前段时间接触了AChartEngine,在数据显示方面感觉非常好用,然后经过一段时间的接触,对于AChartEngine的扩展和使用有了一些整理和总结,本着技术共享的原则,分享给大家.我整理的东西都是 ...

  7. [Android分享] 【转帖】Android ListView的A-Z字母排序和过滤搜索功能

      感谢eoe社区的分享   最近看关于Android实现ListView的功能问题,一直都是小伙伴们关心探讨的Android开发问题之一,今天看到有关ListView实现A-Z字母排序和过滤搜索功能 ...

  8. python del 注意点

    >>> del a[:] >>> a [] del也可以用于删除整个变量: >>> >>> del a 之后再引用名称 a 将会 ...

  9. 字串符相关 split() 字串符分隔 substring() 提取字符串 substr()提取指定数目的字符 parseInt() 函数可解析一个字符串,并返回一个整数。

    split() 方法将字符串分割为字符串数组,并返回此数组. stringObject.split(separator,limit) 我们将按照不同的方式来分割字符串: 使用指定符号分割字符串,代码如 ...

  10. Oracle Redo

    Redo log 重做日志在Oracle数据库中,有一种日志文件叫做重做日志文件,他就是大家俗称的:redolog.在redolog中又分为两种:在线重做日志与归档日志. ONLINE Redo lo ...