(二)Android系統信息

本文為Android的系統信息相關知識整理,具體參考了

  • 《Android群英傳》第九章 Android系統信息與安全機制
  1. 系統信息獲取

獲取系統信息的兩種方式:

  • android.os.Builder,包含系統編譯時的大量設備、配置信息。
    • Build.BOARD //主板
    • Build.BRAND //Android系統定制商
    • Build.PRODUCT //手機產品名
    • ...
  • SystemProperty,包含系統配置屬性值和參數。
    • os.version //OS版本
    • os.name //OS名稱
    • user.timezone //時區
    • ...
String board = Build.BOARD;
String brand = Build.BRAND;
String os_version = System.getProperty("os.version");
String os_name = Ststem.getProperty("os.version");

系統信息來源,其中包含比函數獲得的多得多的信息:

  • Android系統目錄的system/build.prop文件。里面包含android.os.Build所獲取的信息。
  • Android系統目錄的proc/文件夾,里面包含非常多的系統信息。
  1. 應用信息獲取

2.1 PackageManager

PackageManager,重點在于獲取應用的包信息。這些信息來自AndroidManifest.xml

AndroidManifest.xml的文件內容結構:

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.teamir.mendcurse"
        android:versionCode="1"
        android:versionName="1.0" >
        
        <application
            android:name=".AppData"
            android:allowBackup="true"
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name"
            android:theme="@style/AppTheme" >
         
            <activity
                android:name="com.teamir.mendcurse.welcome.SplashActivity"
                android:label="@string/app_name"
                android:screenOrientation="landscape"
                android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >  
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>         
            </activity>

        </application>

    </manifest>

各個標簽的封裝類:

  • mainfest -> PackageInfo
  • application -> ApplicationInfo
  • activity -> ActivityInfo
  • service -> ServiceInfo

簡單用法示例,提取所有應用名。當然也可以新建一個類,存到里面。

//獲取PackageManager對象
pm = this.getPackageManager(); 
//獲取所有的應用信息
List<ApplicationInfo> listApplications = pm.getInstalledApplications(PackageManager.GET_UNINSTALLED_PACKAGES) 
List<String> labelList = new ArrayList<String>();
for(ApplicationInfo app:listApplications){
    labelList.add((String)app.loadLabel(pm));
}

2.2 ActivityManager

ActivityManager,重點在于獲得在運行的應用程序信息。

ActivityManager封裝的重要的Bean對象:

  • ActivityManager.MemoryInfo,全局的內存信息
    • availMem,系統可用內存
    • totalMem,總內存
    • threshold,低內存閾值
    • lowMemory,是否處于低內存
  • Debug.MemoryInfo,進程下的內存信息
  • RunningAppProcessInfo,運行的進程信息
  • RunningServiceInfo,運行的服務信息

示例,獲取正在運行過的進程的pid:

ActivityManager mActivityManager =(ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> appProcessList = mActivityManager.getRunningAppProcessInfo();

List<Integer> pidList = new ArrayList<Integer>();
for(int i = 0; i < appProcessList.size(); i++){
    pidList.add(info.pid);
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容