在这个例子中将展示如何获取Application的几个基本属性信息:名字、Package标签、版本信息和图标信息。
创建一个用于存储基本信息的Class:
- 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 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 );
- final int max = apps.size();
- for (int i=0 ; i < max; i++) {
- apps.get(i).prettyPrint();
- }
- }
还有一个相对比较简单的应用,借由PackageManager来获取Application信息:
- PackageManager manager = this .getPackageManager ();
- try {
- PackageInfo info = manager.getPackageInfo (this .getPackageName(), 0 );
- String packageName = info.packageName;
- int versionCode = info.versionCode;
- String versionName = info.versionName;
- } catch (NameNotFoundException e) {
- // TODO Auto-generated catch block
- }
- http://blog.sina.com.cn/s/blog_6d8189930100nyds.html
- final Context context = mContext;
- final PackageManager pm = context.getPackageManager();
abstract PackageManager getPackageManager ()
Return PackageManager instance to find global package information.
获取系统内 Applications 的基本信息可以使用以下这个方法。
getPackageManager().getInstalledPackages (0) - abstract PackageInfo
getPackageInfo (String packageName, int flags) Retrieve overall information about an application package that is installed on the system. - http://firefox7.javaeye.com/blog/865027