Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Andriod PackageManager使用

Andriod PackageManager使用

編輯:關於Android編程

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
說明:獲取應用程序中獲取節點信息
我們可以通過它來獲取我們設置的任何屬性,包括:theme,launchMode等
常用的方法繼承至PackageIntemInfo類中的loadIcon()和loadLabel()

3.ServiceInfo類
說明:同ActivityInfo類似,同樣的繼承自PackageItemInfo,只不過它表示是節點信息

4.ApplicationInfo類:
繼承自PackageItemInfo
說明:獲取一個特定應用程序中節點的
字段說明:
flags字段:FLAG_SYSTEM 系統應用程序
FLAG_EXTERNAL_STORAGE 表示該應用安裝在sdcard中
常用的方法繼承至:packageItemInfo類中的LoadIcon()和loadLabel()

5.ResolveInfo類:
說明:根據節點來獲取上一層目錄的信息,通常是,,節點信息。
常用字段:
public ActivityInfo activiInfo獲取activityInfo對象,即或節點信息
public ServiceInfo serviceInfo 獲取ServiceInfo對象,即節點信息

常用方法:
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 ListgetInstalledApplication(int flags)
方法說明:flags一般是進行過濾使用的,flages一般:GET_UNINSTALLED_PACKAGE,那麼返回所以的ApplicationInfo.我們可以通過ApplicationInfo的flags過濾,得到我們需要的
public abstract ListgetInstalledPackage(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 ListqueryIntentActivities(Intent intent,int flags)
功能:返回給定條件的所有ResolveInfo對象(本質上是Activity),集合對象

public abstract ResolveInfo resolveService(Intent intent,int flags)
功能:返回給定條件的ResolveInfo對象(本質上是Service)

public abstract ListqueryIntentServices(Intent intent,int flags)
功能:返回給定條件的所有ResolveInfo對象(本質上是Service),集合對象

List packs = pm.getInstalledPackages(PackageManager.GET_UNINSTALLED_PACKAGES);
Intent intent=new Intent();
intent.setAction(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);

ListresolveInfos=(List) pm.queryIntentActivities(intent, PackageManager.GET_UNINSTALLED_PACKAGES);
for(ResolveInfo info:resolveInfos){
HashMap map = new HashMap();
map.put("icon",info.loadIcon(pm));
map.put("appName",info.loadLabel(pm));
map.put("packageName",info.activityInfo.packageName);
items.add(map);
}
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved