PackageManager 管理应用程序信息
AnroidManifest.xml文件节点说明:
AndroidManifest.xml文件中所有节点的基类,PackageInfo 对象可以获得配置文件中AnroidManifest的所有信息,
由上图可以看出,activity,service,receiver等组件都是application的子节点,而application的父节点是PackgeInfo,同时权限配置信息也是PackageInfo的子节点,所以只要得到PackageInfo的对象,就能得到一个应用的具体信息。
初始化包管理器 PackageManager
// **获得包管理器,在android下PackageManager相当windows下的程序管理器
PackageManager pm = getPackageManager();
实例化PackageInfo对象,可以获得包信息,应用版本号,应用首次安装时间,应用涉及权限等信息
// 初始化PackageInfo
PackageInfo packageInfo = pm.getPackageInfo(getPackageName(),PackageManager.GET_UNINSTALLED_PACKAGES);
// 获得应用程序版本号
int versionCode = packageInfo.versionCode;
String versionName = packageInfo.versionName;
// 获得应用程序首次安装时间,但经过亲自测试,该值存在误差,不够精确
long installTime = packageInfo.firstInstallTime;
// 获得该应用涉及的权限信息
PermissionInfo[] permissions = packageInfo.permissions;
for (PermissionInfo permissionInfo : permissions) {
Log.i("permissionInfo", permissionInfo.name);
}
PackageInfo 对象可以获得配置文件中AnroidManifest的所有信息,如下图,具体代码在此就不一一列举出来了
实例化ApplicationInfo对象,这个对象里面有获取应用程序图标,名称,包等方法.
// **获得包管理器,在android下PackageManager相当windows下的程序管理器
PackageManager pm = getPackageManager();
// 声明ApplicationInfo对象
ApplicationInfo appInfo = null;
try {
// 实例化:PackageManager通过包名获得ApplicationInfo实例
appInfo = pm.getApplicationInfo(getPackageName(),
PackageManager.GET_UNINSTALLED_PACKAGES);
} catch (NameNotFoundException e) {
e.printStackTrace();
}// 获得PackageInfo对象的属性applicationInfo 获得子节点 application对象
ApplicationInfo info = packageInfo.applicationInfo;
Drawable app_ico = info.loadIcon(pm);
// 获得应用程序的名称(如:360手机卫士)
String app_name = info.loadLabel(pm).toString();
// 得到应用程序包名 (如:com.safe.guard)
String packageName = info.packageName;
// PackageInfo的子节点Activity:得到所有Activity的信息
ActivityInfo[] activities = packageInfo.activities;
判断一个应用是否是系统应用
public boolean filterApp(ApplicationInfo info) {
// android系统应用,用户手动升级
if ((info.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0) {
return true;
// 用户自己安装的应用程序
} else if ((info.flags & ApplicationInfo.FLAG_SYSTEM) == 0) {
return true;
}
return false;
}
参考文章: http://www.linuxidc.com/Linux/2012-02/53072.htm
本文介绍如何使用Android的PackageManager获取应用程序的详细信息,包括版本号、安装时间及权限等,并展示了如何判断一个应用是否为系统应用。
5292

被折叠的 条评论
为什么被折叠?



