擷取系統內Applications的基本資料

來源:互聯網
上載者:User

在這個例子中將展示如何擷取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();

    abstract
    PackageManager
    getPackageManager

    ()


    Return
    PackageManager 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




聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.