Android 系統(tǒng)信息

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ī)制——沙箱隔離
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容