获取系统内Applications的基本信息

来源:互联网 发布:hp1020网络打印机驱动 编辑:程序博客网 时间:2024/04/29 08:54

在这个例子中将展示如何获取Application的几个基本属性信息:名字、Package标签、版本信息和图标信息。
创建一个用于存储基本信息的Class:

Java代码 复制代码
  1. class PInfo {    
  2.   
  3.   
  4.      private String appname = "";    
  5.   
  6.      private String pname = "";    
  7.   
  8.      private String versionName = "";    
  9.   
  10.      private int versionCode = 0;    
  11.   
  12.      private Drawable icon;    
  13.   
  14.      private void prettyPrint() {    
  15.   
  16.          log(appname + "t" + pname + "t" + versionName + "t" + versionCode + "t");    
  17.   
  18.      }    
  19.   
  20.  }   
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");       }   } 

 

接下来是获取信息的主体:

Java代码 复制代码
  1. private ArrayList < PInfo > getInstalledApps(boolean getSysPackages) {    
  2.   
  3.     ArrayList < PInfo > res = new ArrayList < PInfo > ();    
  4.   
  5.      List < PackageInfo > packs = getPackageManager().getInstalledPackages(0);    
  6.   
  7.      for(int i=0;i < packs.size();i++) {    
  8.   
  9.          PackageInfo p = packs.get(i);    
  10.   
  11.          if ((!getSysPackages) && (p.versionName == null)) {    
  12.   
  13.              continue ;    
  14.   
  15.          }    
  16.   
  17.         PInfo newInfo = new PInfo();    
  18.   
  19.         newInfo.appname = p.applicationInfo.loadLabel(getPackageManager()).toString();    
  20.   
  21.          newInfo.pname = p.packageName;    
  22.   
  23.         newInfo.versionName = p.versionName;    
  24.   
  25.         newInfo.versionCode = p.versionCode;    
  26.   
  27.         newInfo.icon = p.applicationInfo.loadIcon(getPackageManager());    
  28.   
  29.          res.add(newInfo);    
  30.   
  31.      }    
  32.   
  33.     return res;    
  34.   
  35.  }   
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信息:

Java代码 复制代码
  1. private void listPackages() {    
  2.   
  3.     ArrayList < PInfo > apps = getInstalledApps(false);    
  4.   
  5.     final int max = apps.size();    
  6.   
  7.     for (int i=0; i < max; i++) {    
  8.   
  9.         apps.get(i).prettyPrint();    
  10.   
  11.     }    
  12.   
  13.  }   
private void listPackages() {      ArrayList < PInfo > apps = getInstalledApps(false);      final int max = apps.size();      for (int i=0; i < max; i++) {          apps.get(i).prettyPrint();      }   } 

 

还有一个相对比较简单的应用,借由PackageManager来获取Application信息:

Java代码 复制代码
  1. PackageManager manager = this.getPackageManager();    
  2.   
  3.  try {        
  4.   
  5.     PackageInfo info = manager.getPackageInfo(this.getPackageName(), 0);    
  6.   
  7.     String packageName = info.packageName;    
  8.   
  9.     int versionCode = info.versionCode;    
  10.   
  11.    String versionName = info.versionName;      
  12.       
  13.   
  14.  } catch (NameNotFoundException e) {    
  15.   
  16.     // TODO Auto-generated catch block    
  17.   
  18.  } 
  19. http://blog.sina.com.cn/s/blog_6d8189930100nyds.html
  20. final Context context = mContext;
  21. final PackageManager pm = context.getPackageManager();

    abstractPackageManagergetPackageManager()

    ReturnPackageManager instance to find global package information.

     

    获取系统内Applications的基本信息可以使用以下这个方法。
    getPackageManager().getInstalledPackages(0)

  22. abstract PackageInfo   getPackageInfo(String packageName, int flags)
    Retrieve overall information about an application package that is installed on the system.
  23. http://firefox7.javaeye.com/blog/865027

原创粉丝点击