PackageManager()的使用列舉相關的事件

轉自:http://lfcaolibin.iteye.com/blog/618663


PackageManager()的使用列舉相關的事件 
文章分類:移動開發 

看來這個東西應該專門開一個帖子了,發現這個包裏面的東西太多,以前寫的很零碎不容易找 

查詢系統使用的Content Providers 
Java代碼 

   1. for (PackageInfo pack : getPackageManager().getInstalledPackages(PackageManager.GET_PROVIDERS)) {   
   2.         ProviderInfo[] providers = pack.providers;   
   3.         if (providers != null) {   
   4.             for (ProviderInfo provider : providers) {   
   5.                 Log.d("Example", "provider: " + provider.authority);   
   6.             }   
   7.         }   
   8.     }   

Java代碼 

   1. for (PackageInfo pack : getPackageManager().getInstalledPackages(PackageManager.GET_PROVIDERS)) {   
   2.         ProviderInfo[] providers = pack.providers;   
   3.         if (providers != null) {   
   4.             for (ProviderInfo provider : providers) {   
   5.                 Log.d("Example", "provider: " + provider.authority);   
   6.             }   
   7.         }   
   8.     }   

for (PackageInfo pack : getPackageManager().getInstalledPackages(PackageManager.GET_PROVIDERS)) { 
        ProviderInfo[] providers = pack.providers; 
        if (providers != null) { 
            for (ProviderInfo provider : providers) { 
                Log.d("Example", "provider: " + provider.authority); 
            } 
        } 
    } 


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(appname + "\t" + pname + "\t" + versionName + "\t" + versionCode + "\t");     
   9.     }     
  10. }     
  11.     
  12. private void listPackages() {     
  13.     ArrayList<PInfo> apps = getInstalledApps(false); /* false = no system packages */    
  14.     final int max = apps.size();     
  15.     for (int i=0; i<max; i++) {     
  16.         apps.get(i).prettyPrint();     
  17.     }     
  18. }     
  19.     
  20. private ArrayList<PInfo> getInstalledApps(boolean getSysPackages) {     
  21.     ArrayList<PInfo> res = new ArrayList<PInfo>();             
  22.     List<PackageInfo> packs = getPackageManager().getInstalledPackages(0);     
  23.     for(int i=0;i<packs.size();i++) {     
  24.         PackageInfo p = packs.get(i);     
  25.         if ((!getSysPackages) && (p.versionName == null)) {     
  26.             continue ;     
  27.         }     
  28.         PInfo newInfo = new PInfo();     
  29.         newInfo.appname = p.applicationInfo.loadLabel(getPackageManager()).toString();     
  30.         newInfo.pname = p.packageName;     
  31.         newInfo.versionName = p.versionName;     
  32.         newInfo.versionCode = p.versionCode;     
  33.         newInfo.icon = p.applicationInfo.loadIcon(getPackageManager());     
  34.         res.add(newInfo);     
  35.     }     
  36.     return res;      
  37. }    

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(appname + "\t" + pname + "\t" + versionName + "\t" + versionCode + "\t");     
   9.     }     
  10. }     
  11.     
  12. private void listPackages() {     
  13.     ArrayList<PInfo> apps = getInstalledApps(false); /* false = no system packages */    
  14.     final int max = apps.size();     
  15.     for (int i=0; i<max; i++) {     
  16.         apps.get(i).prettyPrint();     
  17.     }     
  18. }     
  19.     
  20. private ArrayList<PInfo> getInstalledApps(boolean getSysPackages) {     
  21.     ArrayList<PInfo> res = new ArrayList<PInfo>();             
  22.     List<PackageInfo> packs = getPackageManager().getInstalledPackages(0);     
  23.     for(int i=0;i<packs.size();i++) {     
  24.         PackageInfo p = packs.get(i);     
  25.         if ((!getSysPackages) && (p.versionName == null)) {     
  26.             continue ;     
  27.         }     
  28.         PInfo newInfo = new PInfo();     
  29.         newInfo.appname = p.applicationInfo.loadLabel(getPackageManager()).toString();     
  30.         newInfo.pname = p.packageName;     
  31.         newInfo.versionName = p.versionName;     
  32.         newInfo.versionCode = p.versionCode;     
  33.         newInfo.icon = p.applicationInfo.loadIcon(getPackageManager());     
  34.         res.add(newInfo);     
  35.     }     
  36.     return res;      
  37. }    

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;    
}  



用這個方法來獲取系統內所包含的Applications信息: 
Java代碼 

   1. private void listPackages() {    
   2.   
   3.    ArrayList < PInfo > apps = getInstalledApps(false); /* false = no system packages */   
   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.  }   

Java代碼 

   1. private void listPackages() {    
   2.   
   3.    ArrayList < PInfo > apps = getInstalledApps(false); /* false = no system packages */   
   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.  }   

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();  

   }  



Java代碼 

   1. 01 PackageManager manager = this.getPackageManager();    
   2.   
   3. 02 try {      
   4.   
   5. 03      
   6.   
   7. 04    PackageInfo info = manager.getPackageInfo(this.getPackageName(), 0);    
   8.   
   9. 05    String packageName = info.packageName;    
  10.   
  11. 06    int versionCode = info.versionCode;    
  12.   
  13. 07    String versionName = info.versionName;      
  14.   
  15. 08      
  16.   
  17. 09 } catch (NameNotFoundException e) {    
  18.   
  19. 10    // TODO Auto-generated catch block    
  20.   
  21. 11 }   

Java代碼 

   1. 01 PackageManager manager = this.getPackageManager();    
   2.   
   3. 02 try {      
   4.   
   5. 03      
   6.   
   7. 04    PackageInfo info = manager.getPackageInfo(this.getPackageName(), 0);    
   8.   
   9. 05    String packageName = info.packageName;    
  10.   
  11. 06    int versionCode = info.versionCode;    
  12.   
  13. 07    String versionName = info.versionName;      
  14.   
  15. 08      
  16.   
  17. 09 } catch (NameNotFoundException e) {    
  18.   
  19. 10    // TODO Auto-generated catch block    
  20.   
  21. 11 }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章