[Android] 关于getinstalledpackages参数的分析
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参数的分析的更多相关文章
- [Android]Android系统启动流程源码分析
以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/5013863.html Android系统启动流程源码分析 首先 ...
- Android PopupWindow的使用和分析
Android PopupWindow的使用和分析 PopupWindow使用 PopupWindow这个类用来实现一个弹出框,可以使用任意布局的View作为其内容,这个弹出框是悬浮在当前activi ...
- android关于AndroidManifest.xml详细分析
http://my.eoe.cn/1087692/archive/5927.html 一.关于AndroidManifest.xmlAndroidManifest.xml 是每个android程序中必 ...
- Gradle之Android Gradle Plugin 主要 Task 分析(三)
[Android 修炼手册]Gradle 篇 -- Android Gradle Plugin 主要 Task 分析 预备知识 理解 gradle 的基本开发 了解 gradle task 和 plu ...
- Android中Scroller类的分析
今天看了一下项目中用到的ViewFlow控件,想弄明白其工作原理.从头开始分析,卡在"滚动"这儿了. 做android也快两年了,连最基本的滚动都不熟悉,真是惭愧...遂网上找资料 ...
- 阿里早期Android加固代码的实现分析
本文博客地址:http://blog.csdn.net/qq1084283172/article/details/78320445 看雪上有作者(寒号鸟二代)将阿里移动早期的Android加固进行了逆 ...
- 1.Android 视图及View绘制分析笔记之setContentView
自从1983年第一台图形用户界面的个人电脑问世以来,几乎所有的PC操作系统都支持可视化操作,Android也不例外.对于所有Android Developer来说,我们接触最多的控件就是View.通常 ...
- (转)Android 系统 root 破解原理分析
现在Android系统的root破解基本上成为大家的必备技能!网上也有很多中一键破解的软件,使root破解越来越容易.但是你思考过root破解的 原理吗?root破解的本质是什么呢?难道是利用了Lin ...
- 列表页url参数格式分析【求指教】
运营对列表页url制定静态化模式,与区区观点相悖.遂请大家指教点解. 动态参数包含6个,分别是: 1认证(有机),2品类(水果),3地区(丰台),4状态(众筹中),5排序(评分),6分页 使用状态非常 ...
随机推荐
- 利用PHP读取文件
$fp=fopen("D:\\phpStudy\\www\\date\\file\\2.txt","r");if($fp){ while(!feof($f ...
- r8 - ASC 41(俄罗斯多校)
1 今天干的俄罗斯的一场多校,被虐哭啊,就做出两题. 2 3 4 5 6 7 Gym 100496D Data Mining 8 题目讲得是给你一串数字,然后给你i,p,表示从第i开始,对这串数离散话 ...
- 《深入浅出WPF》笔记三
1.Field:字段,封装在类中的变量. Method:方法,封装在类中的函数. 成员:类中的字段和方法,可分为静态成员和非静态成员. 静态字段在内存中只有一份拷贝. 非静态字段是每个实例拥有一个拷贝 ...
- 利用LruCache为GridView加载大量本地图片完整示例
MainActivity如下: package cc.testlrucache; import android.os.Bundle; import android.widget.GridView; i ...
- MySQL的InnoDB索引原理详解 (转)
摘要: 本篇介绍下Mysql的InnoDB索引相关知识,从各种树到索引原理到存储的细节. InnoDB是Mysql的默认存储引擎(Mysql5.5.5之前是MyISAM,文档).本着高效学习的目的,本 ...
- 使用update!导致的更新时候的错误信息不显示 ruby on rails
在图片管理里添加了校验方法之后,发现在更新的时候页面不显示校验报错的信息 class Picture < ApplicationRecord belongs_to :imageable, pol ...
- 使用json存储结构化数据
从文件中读写字符串很容易.数值就要多费点儿周折,因为read ()方法只会返回字符串,应将其传入int()这样的函数,就可以将'123'这样的字符串转换为对应的数值 123.当你想要保存更为复杂的数据 ...
- 技术博客(初用markdown)
技术博客 菜鸟教程在这个网站我学到许多有趣的东西,并且弥补了我之前的一些不足之处. 以下为我学习到的内容. 1 如果想输出多个多位数的时候,可以尝试用多个if语句.如果需要输出3为数的时候,设置三个变 ...
- 3 EventTime 事件时间类和TimeNow函数——Live555源码阅读(一)基本组件类
这是Live555源码阅读的第一部分,包括了时间类,延时队列类,处理程序描述类,哈希表类这四个大类. 这里是时间相关类的第三个部分,也是最后一个部分. EventTime 事件时间类 这个类和Dela ...
- django的ajax对应前端的瀑布流方法
html {% load xx %} <!DOCTYPE html> <html lang="en"> <head> <meta char ...