Android之獲取packageinfo相關

根據PackageInfo對象獲取APP信息

PackageInfo類包含AndroidManifest.xml文件的信息。

常用字段 含義
String packageName 包名
ActivityInfo[] activities 所有<activity>節點信息
ApplicationInfo applicationInfo <application>節點信息,只有一個
ActivityInfo[] receivers 所有<receiver>節點信息,多個
ServiceInfo[] services 所有<service>節點信息 ,多個

獲取APP信息方式:

ApplicationInfo applicationInfo = packageInfo.applicationInfo;
// APP 包名
String packageName = packageInfo.packageName;
// APP icon
Drawable icon = packageManager.getApplicationIcon(applicationInfo);
// APP 名稱
String appName = packageManager.getApplicationLabel(applicationInfo).toString();
// APP 權限
String[] permissions = packageManager.getPackageInfo(packageName,PackageManager.GET_PERMISSIONS).requestedPermissions;

ApplicationInfo類

ApplicationInfo是android.content.pm包下的一個實體類,用於封裝應用的信息,flags是其中的一個成員變量public int flags = 0;用於保存應用的標誌信息。

ApplicationInfo 可以得到一個應用基本信息。這些信息是從AndroidManifest.xml的< application >標籤獲取的

ApplicationInfo對象裏保存的信息都是<application>標籤裏的屬性值

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

字段說明 含義
flags字段 -
FLAG_SYSTEM 系統應用程序
FLAG_EXTERNAL_STORAGE 表示該應用安裝在sdcard中
獲取手機上安裝所有程序對應的 ApplicationInfo
/**
* 獲取手機上安裝的所有的程序對應的 ApplicationInfo
* 它是通過解析AndroidManifest.xml的< application>標籤中得到的,所以它能得到所有的app
*
* 獲取手機上的所有的安裝的應用程序信息
*  參數爲 標識   一般爲 PackageManager.GET_UNINSTALLED_PACKAGES
*/
List<ApplicationInfo> list = packageManager.getInstalledApplications(PackageManager.GET_UNINSTALLED_PACKAGES);
獲取指定包名對應的 ApplicationInfo
 /**
* 獲取指定應用程序  ApplicationInfo
*  參數一對應應用程序的包名
*  參數二 應用程序對應的標識  通常爲 0
*/
ApplicationInfo applicationInfo = 
packageManager.getApplicationInfo("com.androidlongs.contactsapplication", 0);

ResolveInfo類

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

常用字段 含義
ActivityInfo activityInfo 獲取 ActivityInfo對象,即<activity>或<receiver>節點信息
ServiceInfo serviceInfo 獲取 ServiceInfo對象,即<service>節點信息

根據ResolveInfo對象獲取APP信息:

// APP包名
resolve.activityInfo.packageName;
// APP icon
resolve.loadIcon(packageManager);
// APP名稱
resolve.loadLabel(packageManager).toString();
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章