1.android系统信息获取
1.1 android.os.Build
Build.BOARD //主板
Build.BRAND //Android系统定制商
Build.SUPPORTED_ABIS //CPU指令集
Build.DEVICE //设备参数
Build.DISPLAY //显示屏参数
Build.FINGERPRINT //唯一编号
Build.SERIAL //硬件序列号
Build.ID //修订版本列表
Build.MANUFACTURER //硬件制造商
Build.MODEL //版本
Build.HARDWARE //硬件名
Build.PRODUCT //手机产品名
Build.TAGS //描述Build的标签
Build.TYPE //BuildL类型
Build.VERSION.CODENAME //当前开发代号
Build.VERSION.INCREMENTAL //源码控制版本号
Build.VERSION.RELEASE //版本字符串
Build.VERSION.SDK_INT //版本号
Build.HOST //Host值
Build.User //User名
Build.TIME //编译时间
1.2 SystemProperty
os.version //OS版本
os.name //OS名称
os.arch //OS架构
user.home //Home属性
user.name //Name属性
user.dir //Dir属性
user.timezone //时区
path.separator //路径分隔符
line.separator //行分隔符
file.separator //文件分隔符
java.vendor.url //java vender URL 属性
java.class.path //java Class路径
java.class.version //java Class版本
java.vendor //java Vender属性
java.version //java 版本
java.home //java Home 属性
1.3系统信息实例
String board = Build.BOARD;
String brand = Build.BRAND;
String os_version = System.getProperty("os.version");
String os_name= System.getProperty("os.name");
2.应用信息获取之PackageManager
下面列举一些常用的系统封装信息
ActivityInfo
ActivityInfo封装了在Mainifest文件中<activity></activity>和<receiver></receiver>之间的所有信息,包括name,icon,label,launchmod等
ServiceInfo
封装了<service></service>之间的所有信息
ApplicationInfo
封装<application></application>之间的信息,Application包含很多
Flag,FLAG_SYSTEM表示为系统应用,FLAG_EXTERNAL_STORAGEB表示为安装在SDCard上的应用等,通过这些Flag,可以很方便地判断应用的类型
PackageInfo
用于封装Manifest文件的相关节点信息,而PackageInfo包含了所有的Activity、Service等信息。
ResolveInfo
ResolveInfo比较特殊,它封装的是包含<intent>信息的上一级信息,所以它可以返回ActivityInfo、ServiceInfo等包含<intent>的信息,它经常用来帮助我们找到那些包含特定Intent条件的信息,如带分享功能、播放功能的应用。
PackageManager常用以下方法。
- getPackageManager
- getApplicationInfo
- getApplicationIcon
- getInstalledApplications
- getInstalledPackages:以PackageInfo的形式返回安装的应用
- queryIntentActivities:返回指定intent的ResolveInfo对象、Activity集合
- queryIntentServices:返回指定intent的ResolveInfo对象、Service集合
- resolveActivity:返回置顶intent的Activity
- resolveService: 返回置顶intent的Service
判断App类型依据
- 如果当前应用的flags & ApplicationInfo.FLAG_SYSTEM != 0则为系统应用
- 如果当前应用的flags & ApplicationInfo.FLAG_SYSTEM <= 0则为第三方应用
- 特殊的,当系统应用升级后,也将成为第三方应用flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP != 0。
- 如果当前应用的flags & ApplicationInfo.FLAG_EXTERNAL_STORAGE != 0则为安装在SDCard上的应用
3应用信息获取之ActivityManager
- ActivityManager.MemoryInfo
availMem —— 系统可用内存,totalMem——总内存,threshold——低内存的阈值,lowMemory——是否处于低内存 - Debug.MemoryInfo
用于统计进程下的内存信息 - RunningAppProcessInfo
运行进程的信息,processName ——进程名,pid——进程pid,uid——进程uid,pkgList——该进程下所有包 - RunningServiceInfo
类似RunningAppProcessInfo,用于封装运行时的服务信息。activeSince——第一次被激活的时间、方式,foreground——服务是否在后台执行
安全机制
- 代码安全机制——代码混淆proguard
- 应用接入权限控制——AndroidMainifest文件权限声明、权限检查机制
- 应用签名机制——数字证书
- Linux内核层安全机制——Uid、访问权限控制
- Android虚拟机沙箱机制——沙箱隔离