关于getinstalledpackages參数的分析。
此blog不写API的使用方法仅仅分析此參数的知识点。
今天学习安卓突然学习到了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,
以上均为个人看法。
关于getinstalledpackages參数的分析。的更多相关文章
- springmvc学习笔记(12)-springmvc注解开发之包装类型參数绑定
springmvc学习笔记(12)-springmvc注解开发之包装类型參数绑定 标签: springmvc springmvc学习笔记12-springmvc注解开发之包装类型參数绑定 需求 实现方 ...
- linux kernel的cmdline參数解析原理分析
利用工作之便,今天研究了kernel下cmdline參数解析过程.记录在此.与大家共享.转载请注明出处.谢谢. Kernel 版本:3.4.55 Kernel启动时会解析cmdline,然后依据这些參 ...
- RPM安装包-Spec文件參数具体解释与演示样例分析
spec文件是整个RPM包建立过程的中心,它的作用就如同编译程序时的Makefile文件. 1.Spec文件參数 spec文件包括建立一个RPM包必需的信息,包括哪些文件是包的一部分以及它们安装在哪个 ...
- 动态游标(比如表名作为參数)以及动态SQL分析
表名作为參数的动态游标 DECLARE v_table_name VARCHAR2(30) := 'CUX_MES_WIP_BARCODE_MAP'; --l_rec SYS_REFCURSOR; T ...
- java參数传递机制浅析
欢迎转载,转载请声明出处! ----------------------------------------- 前言: java语言中,參数的传递仅仅有一种机制.那就是值传递. 举例: 以下将通过几个 ...
- 【web开发学习笔记】Structs2 Result学习笔记(三)带參数的结果集
Result学习笔记(三)带參数的结果集 第一部分:代码 //前端 <head> <meta http-equiv="Content-Type" content= ...
- Java參数传递方式
原文:http://blog.sina.com.cn/s/blog_59ca2c2a0100qhjx.html,我作了些改动并添加了一个实例,添加对照 本文通过内存模型的方式来讨论一下Java中的參数 ...
- 命令行參数选项处理:getopt()及getopt_long()函数使用
在执行某个程序的时候,我们通常使用命令行參数来进行配置其行为.命令行选项和參数控制 UNIX 程序,告知它们怎样动作. 当 gcc的程序启动代码调用我们的入口函数 main(int argc ...
- 【JAVA学习】“-Xmx1024m -Xms1024m -Xmn512m -Xss256k”——Java执行參数(转)
年轻代 年老代概念 http://jefferent.iteye.com/blog/1123677 JVM的堆的内存, 是通过以下面两个參数控制的 -Xms 最小堆的大小, 也就是当你的虚拟机启动后 ...
随机推荐
- A string is a sequence
A string is a sequence of characters. You can access the characters one at a time with the bracket o ...
- C语言基础-第三章
C语句和数据输入/输出(函数) 1.printf();输出函数 2.getch();输入函数 3.scanf();格式输入 4.puts();字符串输出 5.gets();字符串输入
- ByteArray的操作总结(复制、打印、位运算)
1. 字节数组的复制 Method A:Array.Clone() Clone返回的是Object对象,需要强类型转换:Clone会创建一个新的对象,并将value赋给dec ]; ]; dst = ...
- jquery easyui ajax data属性传值方式
$.ajax({ url:url, type:'post', data:data, dataType:'json', contentType: "application/ ...
- 十一 模板匹配match template
一.介绍 1.模板匹配 通俗讲就是以图找图,通过图中的一部分来找它在图中的位置(模板匹配就是在整个图像区域发现与给定子图像匹配的小块区域). 模板匹配是一种最原始.最基本的模式识别方法,研究某一特定对 ...
- k近邻法(k-nearest neighbor, k-NN)
一种基本分类与回归方法 工作原理是:1.训练样本集+对应标签 2.输入没有标签的新数据,将新的数据的每个特征与样本集中数据对应的特征进行比较,然后算法提取样本最相似数据(最近邻)的分类标签. 3.一般 ...
- HDU 2253 Longest Common Subsequence Again
其实这个题我还不会,学长给了一个代码交上去过了,据说用到了一种叫做位压缩的技术,先贴代码吧,以后看懂了再来写 #include <stdio.h> #include <string. ...
- 安装虚拟机(VM)(一)
原创作品,允许转载,转载时请务必声明作者信息和本声明. https://www.cnblogs.com/zhu520/p/10728248.html 本人小白,有错指出.谢谢! 一:安装虚拟机前奏 ...
- EXPIREAT
EXPIREAT key timestamp EXPIREAT 的作用和EXPIRE类似,都用于为key设置生存时间. 不同在于EXPIREAT命令接受都时间参数是UNIX时间戳(unix times ...
- cacti1.1安装报错
安装过程中出现以下报错: ERROR: Your MySQL TimeZone database is not populated. Please populate this database bef ...