获取系统内Applications的基本信息
文章分类:移动开发
在这个例子中将展示如何获取Application的几个基本属性信息:名字、Package标签、版本信息和图标信息。
创建一个用于存储基本信息的Class:
- class PInfo {
- private String appname = "";
- private String pname = "";
- private String versionName = "";
- private int versionCode = 0;
- private Drawable icon;
- private void prettyPrint() {
- log(appname + "t" + pname + "t" + versionName + "t" + versionCode + "t");
- }
- }
接下来是获取信息的主体:
- private ArrayList < PInfo > getInstalledApps(boolean getSysPackages) {
- ArrayList < PInfo > res = new ArrayList < PInfo > ();
- List < PackageInfo > packs = getPackageManager().getInstalledPackages(0);
- for(int i=0;i < packs.size();i++) {
- PackageInfo p = packs.get(i);
- if ((!getSysPackages) && (p.versionName == null)) {
- continue ;
- }
- PInfo newInfo = new PInfo();
- newInfo.appname = p.applicationInfo.loadLabel(getPackageManager()).toString();
- newInfo.pname = p.packageName;
- newInfo.versionName = p.versionName;
- newInfo.versionCode = p.versionCode;
- newInfo.icon = p.applicationInfo.loadIcon(getPackageManager());
- res.add(newInfo);
- }
- return res;
- }
用这个方法来获取系统内所包含的Applications信息:
- private void listPackages() {
- ArrayList < PInfo > apps = getInstalledApps(false); /* false = no system packages */
- final int max = apps.size();
- for (int i=0; i < max; i++) {
- apps.get(i).prettyPrint();
- }
- }
还有一个相对比较简单的应用,借由PackageManager来获取Application信息:
- PackageManager manager = this.getPackageManager();
- try {
- PackageInfo info = manager.getPackageInfo(this.getPackageName(), 0);
- String packageName = info.packageName;
- int versionCode = info.versionCode;
- String versionName = info.versionName;
- } catch (NameNotFoundException e) {
- // TODO Auto-generated catch block
- }