1.android系統(tǒng)信息獲取
1.1 android.os.Build
Build.BOARD //主板
Build.BRAND //Android系統(tǒng)定制商
Build.SUPPORTED_ABIS //CPU指令集
Build.DEVICE //設(shè)備參數(shù)
Build.DISPLAY //顯示屏參數(shù)
Build.FINGERPRINT //唯一編號(hào)
Build.SERIAL //硬件序列號(hào)
Build.ID //修訂版本列表
Build.MANUFACTURER //硬件制造商
Build.MODEL //版本
Build.HARDWARE //硬件名
Build.PRODUCT //手機(jī)產(chǎn)品名
Build.TAGS //描述Build的標(biāo)簽
Build.TYPE //BuildL類型
Build.VERSION.CODENAME //當(dāng)前開發(fā)代號(hào)
Build.VERSION.INCREMENTAL //源碼控制版本號(hào)
Build.VERSION.RELEASE //版本字符串
Build.VERSION.SDK_INT //版本號(hào)
Build.HOST //Host值
Build.User //User名
Build.TIME //編譯時(shí)間
1.2 SystemProperty
os.version //OS版本
os.name //OS名稱
os.arch //OS架構(gòu)
user.home //Home屬性
user.name //Name屬性
user.dir //Dir屬性
user.timezone //時(shí)區(qū)
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系統(tǒng)信息實(shí)例
String board = Build.BOARD;
String brand = Build.BRAND;
String os_version = System.getProperty("os.version");
String os_name= System.getProperty("os.name");
2.應(yīng)用信息獲取之PackageManager
下面列舉一些常用的系統(tǒng)封裝信息
ActivityInfo
ActivityInfo封裝了在Mainifest文件中<activity></activity>和<receiver></receiver>之間的所有信息,包括name,icon,label,launchmod等
ServiceInfo
封裝了<service></service>之間的所有信息
ApplicationInfo
封裝<application></application>之間的信息,Application包含很多
Flag,FLAG_SYSTEM表示為系統(tǒng)應(yīng)用,F(xiàn)LAG_EXTERNAL_STORAGEB表示為安裝在SDCard上的應(yīng)用等,通過這些Flag,可以很方便地判斷應(yīng)用的類型
PackageInfo
用于封裝Manifest文件的相關(guān)節(jié)點(diǎn)信息,而PackageInfo包含了所有的Activity、Service等信息。
ResolveInfo
ResolveInfo比較特殊,它封裝的是包含<intent>信息的上一級(jí)信息,所以它可以返回ActivityInfo、ServiceInfo等包含<intent>的信息,它經(jīng)常用來幫助我們找到那些包含特定Intent條件的信息,如帶分享功能、播放功能的應(yīng)用。
PackageManager常用以下方法。
- getPackageManager
- getApplicationInfo
- getApplicationIcon
- getInstalledApplications
- getInstalledPackages:以PackageInfo的形式返回安裝的應(yīng)用
- queryIntentActivities:返回指定intent的ResolveInfo對(duì)象、Activity集合
- queryIntentServices:返回指定intent的ResolveInfo對(duì)象、Service集合
- resolveActivity:返回置頂intent的Activity
- resolveService: 返回置頂intent的Service
判斷App類型依據(jù)
- 如果當(dāng)前應(yīng)用的flags & ApplicationInfo.FLAG_SYSTEM != 0則為系統(tǒng)應(yīng)用
- 如果當(dāng)前應(yīng)用的flags & ApplicationInfo.FLAG_SYSTEM <= 0則為第三方應(yīng)用
- 特殊的,當(dāng)系統(tǒng)應(yīng)用升級(jí)后,也將成為第三方應(yīng)用flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP != 0。
- 如果當(dāng)前應(yīng)用的flags & ApplicationInfo.FLAG_EXTERNAL_STORAGE != 0則為安裝在SDCard上的應(yīng)用
3應(yīng)用信息獲取之ActivityManager
- ActivityManager.MemoryInfo
availMem —— 系統(tǒng)可用內(nèi)存,totalMem——總內(nèi)存,threshold——低內(nèi)存的閾值,lowMemory——是否處于低內(nèi)存 - Debug.MemoryInfo
用于統(tǒng)計(jì)進(jìn)程下的內(nèi)存信息 - RunningAppProcessInfo
運(yùn)行進(jìn)程的信息,processName ——進(jìn)程名,pid——進(jìn)程pid,uid——進(jìn)程uid,pkgList——該進(jìn)程下所有包 - RunningServiceInfo
類似RunningAppProcessInfo,用于封裝運(yùn)行時(shí)的服務(wù)信息。activeSince——第一次被激活的時(shí)間、方式,foreground——服務(wù)是否在后臺(tái)執(zhí)行
安全機(jī)制
- 代碼安全機(jī)制——代碼混淆proguard
- 應(yīng)用接入權(quán)限控制——AndroidMainifest文件權(quán)限聲明、權(quán)限檢查機(jī)制
- 應(yīng)用簽名機(jī)制——數(shù)字證書
- Linux內(nèi)核層安全機(jī)制——Uid、訪問權(quán)限控制
- Android虛擬機(jī)沙箱機(jī)制——沙箱隔離