總結Android中的Info系列類

     Andorid系統的Framework層中包含了許多管理應用信息的類,比如PackageItmeInfo類下包括ApplicationInfo,ComponentInfo,InstrumentationInfo,PermissionGroupInfo,PermissionInfo。

結構圖如下:

這些info都是被PackageManager管理, 我們可以通過PackageManager對象獲得這些Info類。

 

這個類提供了屬性的非常普通的基本設置:label、icon和meta-data。這個類的意圖不是被自己調用。它在這只是簡單地分享被package manager返回的所有items之間的普通定義。比如,它自己並不實現Parcelable接口,但卻幫助實現了Parcelable的子類提供了方便的方法。
 

        ApplicationInfo:是從一個特定的應用得到的信息。這些信息是從相對應的Androdimanifest.xml的< application>標籤中收集到的。

  ResolveInfo:這個類是通過解析一個與IntentFilter相對應的intent得到的信息。它部分地對應於從AndroidManifest.xml的< intent>標籤收集到的信息。

  PackageManager:這個類是用來返回各種的關聯了當前已裝入設備了的應用的包的信息。你可以通過getPacageManager來得到這個類。

  ApplicationInfo與ResolveInfo比較:前者能夠得到Icon、Label、meta-data、description。後者只能得到Icon、Label。

  下面講一下這幾個類綜合在一起的具體應用:

  通過調用PackageManager的方法可以得到兩種不同的信息:

  首先要得到manager:

  PackageManager manager = getPackageManager();

  方法一:

  List< ApplicationInfo> appList = manager.getInstalledApplications(PackageManager.GET.UNINSTALLED_PAKAGES);

  它是通過解析AndroidManifest.xml的< application>標籤中得到的,所以它能得到所有的app。

  方法二:

  Intent intent = new Intent(Intent.A CTION_MAIN,null);

  intent.addCategory(Intent.CATEGORY_LAUNCHER);

  List< ResolveInfo> appList = manager.queryIntentActivities(intent,0);

  它是通過解析< Intent-filter>標籤得到有

  < action android:name=”android.intent.action.MAIN”/>

  < action android:name=”android.intent.category.LAUNCHER”/>

  這樣的app,所以得到的要比第一種方法少(前者比它多那種service、previder等app)。

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章