Android应用程序管理系列(二)——PackageManager 包管理者
原创
©著作权归作者所有:来自51CTO博客作者早起的年轻人的原创作品,请联系作者获取转载授权,否则将追究法律责任
Android PackageManager 包管理者
1、简述
Android系统为我们提供了很多服务管理的类,
包括ActivityManager、PowerManager(电源管理)、AudioManager(音频管理) 等。
除此之外,还提供了一个PackageManger管理类,它的主要职责是管理应用程序包。 通过它,我们就可以获取应用程序信息。
2、获取PackageManager
PackageManager packageManager = this.getPackageManager();
3、通过PackageManager来获取应用程序对应的 PackageInfo
3.1 、当参数为 0 时 ,也就是为,获取应用的版本信息
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标签
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标签
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标签
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标签
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]);
}
}
}