標籤:application hashmap object map string
1.擷取系統應用程式列表
Android系統提供了很多服務管理類,包括ActivityManager,PowerManager,AudioManager,PackageManager
PackageManager的功能:
.安裝,卸載應用
.查詢Permission相關資訊
.查詢Aplication相關資訊(application,activity,receiver,service,provider及相應屬性等)
.查詢已經安裝的應用
.清除使用者資料,緩衝,程式碼片段等
.顯示系統安裝的應用程式列表或者系統程式列表
相關類的介紹:
PackageItemInfo
說明:androidManifest.xml檔案中所有節點的基類。提供了這些節點的基本資料:label,icon,meta -data,他並不是直接使用的,而是由子類繼承然後調用相應的方法
常用欄位:
public int icon:擷取該資源圖片在R檔案的值(對應於android:icon屬性)
public int label:擷取該label對應R檔案的值(對應於android:label屬性)
public String name:擷取該節點的name(對應於android:name屬性)
public String packagename:擷取該應用程式套件組合名(對應於android:packageName屬性)
常用方法:
Drawabel loadIcon(PackaManager pm):擷取當前應用程式的映像
CharSequence loadLabel(PackageManager pm):擷取當前應用程式的label
2.ActivityInfo類:
繼承自PackageItemInfo
說明:擷取應用程式中<activity/>擷取<receiver/>節點資訊
我們可以通過它來擷取我們設定的任何屬性,包括:theme,launchMode等
常用的方法繼承至PackageIntemInfo類中的loadIcon()和loadLabel()
3.ServiceInfo類
說明:同ActivityInfo類似,同樣的繼承自PackageItemInfo,只不過它表示是<service>節點資訊
4.ApplicationInfo類:
繼承自PackageItemInfo
說明:擷取一個特定應用程式中<application>節點的
欄位說明:
flags欄位:FLAG_SYSTEM 系統應用程式
FLAG_EXTERNAL_STORAGE 表示該應用安裝在sdcard中
常用的方法繼承至:packageItemInfo類中的LoadIcon()和loadLabel()
5.ResolveInfo類:
說明:根據<Intent>節點來擷取上一層目錄的資訊,通常是<activity>,<receiver>,<service>節點資訊。
常用欄位:
public ActivityInfo activiInfo擷取activityInfo對象,即<activity>或<receiver>節點資訊
public ServiceInfo serviceInfo 擷取ServiceInfo對象,即<activity>節點資訊
常用方法:
Drawabel loadIcon(PackaManager pm):擷取當前應用程式的映像
CharSequence loadLabel(PackageManager pm):擷取當前應用程式的label
6.PackageInfo類
說明:擷取AndroidManifest.xml欄位資訊
常用欄位資訊:
public String packageName
public ActivityInfo[]activities
public ApplicationInfo applicationInfo
public ActivityInfo[]receiver
public ServiceInfo[]services
7.PackageManager
說明:擷取系統安裝的程式
可以通過:getPackageManager() 方法擷取
常用的方法:
public abstract PackageManager getPackageManager()
public abstract Drawable getApplicationIcon(String packageName)
public abstract ApplicationInfo getApplicationInfo(String packageName,int flags)
public abstract List<ApplicationInfo>getInstalledApplication(int flags)
方法說明:flags一般是進行過濾使用的,flages一般:GET_UNINSTALLED_PACKAGE,那麼返回所以的ApplicationInfo.我們可以通過ApplicationInfo的flags過濾,得到我們需要的
public abstract List<PackageInfo>getInstalledPackage(int flags)
public abstract ResolveInfo resolverActivity(Intent intent,int flags)
參數:Intent查詢條件,Activity所配置的action和category flags:MATCH_DEFAULT_ONLY,category:必須帶有CATEGORY_DEFAULT的Activity,才匹配GET_INTENT_FILTER:匹配Intent條件即可,GET_RESOLVED_FILTER:匹配Intent條件即可
功能:返回給定條件的ResolverInfo對象(本質上是Activity)
public abstract List<ResolveInfo>queryIntentActivities(Intent intent,int flags)
功能:返回給定條件的所有ResolveInfo對象(本質上是Activity),集合對象
public abstract ResolveInfo resolveService(Intent intent,int flags)
功能:返回給定條件的ResolveInfo對象(本質上是Service)
public abstract List<ResolveInfo>queryIntentServices(Intent intent,int flags)
功能:返回給定條件的所有ResolveInfo對象(本質上是Service),集合對象
List<PackageInfo> packs = pm.getInstalledPackages(PackageManager.GET_UNINSTALLED_PACKAGES);
Intent intent=new Intent();
intent.setAction(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
List<ResolveInfo>resolveInfos=(List<ResolveInfo>) pm.queryIntentActivities(intent, PackageManager.GET_UNINSTALLED_PACKAGES);
for(ResolveInfo info:resolveInfos){
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("icon",info.loadIcon(pm));
map.put("appName",info.loadLabel(pm));
map.put("packageName",info.activityInfo.packageName);
items.add(map);
}