[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 Pro
本文转自demoblog博客园博客,原文链接http://www.cnblogs.com/0616--ataozhijia/p/5696856.html如需转载请自行联系原作者

demoblog
相关文章
|
28天前
|
搜索推荐 Android开发 iOS开发
安卓与iOS系统的用户界面设计对比分析
本文通过对安卓和iOS两大操作系统的用户界面设计进行对比分析,探讨它们在设计理念、交互方式、视觉风格等方面的差异及各自特点,旨在帮助读者更好地理解和评估不同系统的用户体验。
19 1
|
2月前
|
测试技术 Android开发
Android Poco初始化时,不大起眼但可能存在坑点的参数们
Android Poco初始化时,不大起眼但可能存在坑点的参数们
|
2月前
|
Android开发 数据安全/隐私保护 iOS开发
安卓与iOS系统的发展趋势与比较分析
【2月更文挑战第6天】 在移动互联网时代,安卓和iOS系统作为两大主流移动操作系统,各自呈现出不同的发展趋势。本文将从技术角度出发,对安卓和iOS系统的发展方向、特点及未来趋势进行比较分析,以期为读者提供更深入的了解和思考。
35 4
|
3月前
|
监控 Android开发 C语言
深度解读Android崩溃日志案例分析2:tombstone日志
深度解读Android崩溃日志案例分析2:tombstone日志
83 0
|
3月前
|
数据安全/隐私保护 Android开发
2023安卓逆向 -- 某合伙apk登录加密分析
2023安卓逆向 -- 某合伙apk登录加密分析
26 0
|
4月前
|
存储 XML Android开发
Android Studio App开发入门之数据存储中共享参数SharedPreferneces的讲解及使用(附源码 超详细必看)
Android Studio App开发入门之数据存储中共享参数SharedPreferneces的讲解及使用(附源码 超详细必看)
30 0
|
1天前
|
Android开发
Android 动态修改参数配置
Android 动态修改参数配置
8 0
|
2月前
|
网络协议 算法 Android开发
安卓逆向 -- 实战某峰窝APP(动态分析)
安卓逆向 -- 实战某峰窝APP(动态分析)
29 4
|
2月前
|
安全 搜索推荐 Android开发
Android 与 iOS 的比较分析
【2月更文挑战第5天】 Android 和 iOS 是目前市场上两种最流行的移动操作系统,它们都拥有自己的特点和优势。本文将会分别从操作系统设计、应用生态、安全性等方面对这两种操作系统进行比较和分析,希望能够帮助读者更好地选择适合自己的移动设备。
|
3月前
|
安全 算法 JavaScript
安卓逆向 -- 关键代码定位与分析技术
安卓逆向 -- 关键代码定位与分析技术
42 0