Android PackageManager 包管理者
1、简述
Android系统为我们提供了很多服务管理的类,
包括ActivityManager、PowerManager(电源管理)、AudioManager(音频管理) 等。
除此之外,还提供了一个PackageManger管理类,它的主要职责是管理应用程序包。 通过它,我们就可以获取应用程序信息。
2、获取PackageManager
PackageManager packageManager = this.getPackageManager();
3、通过PackageManager来获取应用程序对应的 PackageInfo
3.1 、当参数为 0 时 ,也就是为,获取应用的版本信息
/**
* 获取手机上所有的安装的应用程序 的安装 包信息
* 参数 为 过过滤信息标识
*当参数为 0 时,获取的PackageInfo中只有 versionCode 与versionName 的值
*/
List<PackageInfo> installedPackageList = packageManager.getInstalledPackages(0);
for (PackageInfo packageInfo : installedPackageList) {
int versionCode = packageInfo.versionCode;
Log.i("packageInfo-", "versionCode: " + versionCode);
String versionName = packageInfo.versionName;
Log.i("packageInfo-", "versionName: " + versionName);
}
3.2 、当参数为 2 时 ,也就是为PackageManager.GET_ACTIVITIES ,获取应用中的标签下的所有activity标签
/**
* 当参数为1时 PackageManager.GET_ACTIVITIES
* 获取 <application>标签下的所有activity标签
*/
List<PackageInfo> list = packageManager.getInstalledPackages(PackageManager.GET_ACTIVITIES);
for (PackageInfo packageInfo : list) {
ActivityInfo[] activities = packageInfo.activities;
if (activities != null && activities.length != 0) {
for (int i = 0; i < activities.length; i++) {
Log.d("packageInfo -activities", "| " + activities[i]);
}
}
}
3.3 、当参数为 4 时 ,也就是为PackageManager.GET_SERVICES ,获取应用中的标签下的所有service标签
/**
* 当参数为4时 PackageManager.GET_SERVICES:
* 获取 <application>标签下的所有<service>标签的信息
*/
List<PackageInfo> list = packageManager.getInstalledPackages(PackageManager.GET_SERVICES);
for (PackageInfo packageInfo : list) {
ServiceInfo[] services = packageInfo.services;
if (services != null && services.length != 0) {
for (int i = 0; i < services.length; i++) {
Log.i("packageInfo-services", "services:" + i + "=" + services[i]);
}
}
}
3.4 、当参数为 2 时 ,也就是为PackageManager.GET_RECEIVERS ,获取应用中的标签下的所有receive标签
/**
* 当参数为2时 PackageManager.GET_RECEIVERS:
* 获取 <application>标签下的所有<receive>标签的信息
*/
List<PackageInfo> list = packageManager.getInstalledPackages(PackageManager.GET_RECEIVERS);
for (PackageInfo packageInfo : list) {
ActivityInfo[] receivers = packageInfo.receivers;
if (receivers != null && receivers.length != 0) {
for (int i = 0; i < receivers.length; i++) {
Log.i("packageInfo-", "receivers:" + i + "=" + receivers[i]);
}
}
}
3.5 、当参数为 4096 时 ,也就是为PackageManager.GET_PERMISSIONS ,获取应用中的标签下的所有permission标签
/**
* 当参数为4096时 PackageManager.GET_PERMISSIONS:
* 获取 <application>标签下的所有<permission>标签的信息
*/
List<PackageInfo> list = packageManager.getInstalledPackages(PackageManager.GET_PERMISSIONS);
for (PackageInfo packageInfo : installedPackageList4) {
String[] requestedPermissions = packageInfo.requestedPermissions;
if (requestedPermissions != null && requestedPermissions.length != 0) {
for (int i = 0; i < requestedPermissions.length; i++) {
Log.i("packageInfo-", "requestedPermissions:" + i + "=" + requestedPermissions[i]);
}
}
}