代码获取应用程序的姓名,包名,版本号和图标

代码获取应用程序的名称,包名,版本号和图标
   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 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(); 
       } 
   } 
    
   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;  
   }