Android 系统信息

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虚拟机沙箱机制——沙箱隔离
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容