PackageManager 管理应用程序信息
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