PackageManager 管理应用程序信息

来源:互联网 发布:中国东盟贸易数据 编辑:程序博客网 时间:2024/05/21 13:27

PackageManager 管理应用程序信息

 AnroidManifest.xml文件节点说明:androidManifest.xml

 AndroidManifest.xml文件中所有节点的基类,PackageInfo 对象可以获得配置文件中AnroidManifest的所有信息,

由上图可以看出,activity,service,receiver等组件都是application的子节点,而application的父节点是PackgeInfo,同时权限配置信息也是PackageInfo的子节点,所以只要得到PackageInfo的对象,就能得到一个应用的具体信息。

初始化包管理器 PackageManager

// **获得包管理器,在android下PackageManager相当windows下的程序管理器PackageManager pm = getPackageManager();


实例化PackageInfo对象,可以获得包信息,应用版本号,应用首次安装时间,应用涉及权限等信息

// 初始化PackageInfoPackageInfo 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

0 0
原创粉丝点击