读书人

PackageManager()的施用列举相关的事件

发布时间: 2012-09-02 21:00:34 作者: rapoo

PackageManager()的使用列举相关的事件

看来这个东西应该专门开一个帖子了,发现这个包里面的东西太多,以前写的很零碎不容易找

查询系统使用的Content Providers

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

?

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信息:

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

?

01 PackageManager manager = this.getPackageManager();  02 try {    03    04    PackageInfo info = manager.getPackageInfo(this.getPackageName(), 0);  05    String packageName = info.packageName;  06    int versionCode = info.versionCode;  07    String versionName = info.versionName;    08    09 } catch (NameNotFoundException e) {  10    // TODO Auto-generated catch block  11 } 

?

1 楼 littlenewus 2011-01-27 大哥 请习惯性的给出所需权限。 2 楼 littlenewus 2011-01-27 if ((!getSysPackages) && (p.versionName == null)) {
continue ;
}

系统的应用versionName 都是null的?

读书人网 >移动开发

热点推荐