获取Android所有应用程序的名称-版本-图标

1700阅读 0评论2011-12-28 laiboy
分类:Java

  1. class PInfo {
  2.     private String appname = "";
  3.     private String pname = "";
  4.     private String versionName = "";
  5.     private int versionCode = 0;
  6.     private Drawable icon;
  7.     private void prettyPrint() {
  8.         Log.v(appname + "\t" + pname + "\t" + versionName + "\t" + versionCode);
  9.     }
  10. }

  11. private ArrayList<PInfo> getPackages() {
  12.     ArrayList&lt;PInfo&gt; apps = getInstalledApps(false); /* false = no system packages */
  13.     final int max = apps.size();
  14.     for (int i=0; i&lt;max; i++) {
  15.         apps.get(i).prettyPrint();
  16.     }
  17.     return apps;
  18. }

  19. private ArrayList&lt;PInfo&gt; getInstalledApps(boolean getSysPackages) {
  20.     ArrayList&lt;PInfo&gt; res = new ArrayList&lt;PInfo&gt;();
  21.     List&lt;PackageInfo&gt; packs = getPackageManager().getInstalledPackages(0);
  22.     for(int i=0;i&lt;packs.size();i++) {
  23.         PackageInfo p = packs.get(i);
  24.         if ((!getSysPackages) &amp;&amp; (p.versionName == null)) {
  25.             continue ;
  26.         }
  27.         PInfo newInfo = new PInfo();
  28.         newInfo.appname = p.applicationInfo.loadLabel(getPackageManager()).toString();
  29.         newInfo.pname = p.packageName;
  30.         newInfo.versionName = p.versionName;
  31.         newInfo.versionCode = p.versionCode;
  32.         newInfo.icon = p.applicationInfo.loadIcon(getPackageManager());
  33.         res.add(newInfo);
  34.     }
  35.     return res;
  36. }
上一篇:(转)多态在 Java 和 C++ 中的实现比较
下一篇:[评论] Flash, Silverlight, Win32 :2011三大垂死平台