根據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();