Android中获取系统上安装的APP信息

openkk 12年前

Android中获取系统上安装的APP信息,并且提供卸载、区别用户应用和系统应用的小程序,供初学者参考。

public class PakageInfoProvider {  private static final String tag = "GetappinfoActivity";  private Context context;  private List appInfos;  private AppInfo appInfo;  public PakageInfoProvider(Context context) {  super();  this.context = context;  }  public List getAppInfo() {  PackageManager pm = context.getPackageManager();  List pakageinfos = pm.getInstalledPackages(PackageManager.GET_UNINSTALLED_PACKAGES);  appInfos = new ArrayList();  for (PackageInfo packageInfo : pakageinfos) {  appInfo = new AppInfo();  //获取字符串方法  context.getString(R.string.app_name);  context.getResources().getString(R.string.app_name);  //获取尺寸资源方法  context.getResources().getDimension(R.dimen.test);  //获取xml文件并且返回的是XmlResourceParse类,其继承与XmlPullParse  XmlResourceParser xmlrp = context.getResources().getXml(R.xml.yo);  // 获取应用程序的名称,不是包名,而是清单文件中的labelname  String str_name = packageInfo.applicationInfo.loadLabel(pm).toString();  appInfo.setAppName(str_name);  // 获取应用程序的版本号码  String version = packageInfo.versionName;  appInfo.setAppVersion(version);  // 获取应用程序的快捷方式图标  Drawable drawable = packageInfo.applicationInfo.loadIcon(pm);  appInfo.setDrawable(drawable);  // 获取应用程序是否是第三方应用程序  appInfo.setIsUserApp(filterApp(packageInfo.applicationInfo));  //给一同程序设置包名  appInfo.setPackageName(packageInfo.packageName);  Logger.i(tag, "版本号:" + version + "程序名称:" + str_name);  appInfos.add(appInfo);  appInfo = null;  }  return appInfos;  }  /**  * 三方应用程序的过滤器  *   * @param info  * @return true 三方应用 false 系统应用  */  public boolean filterApp(ApplicationInfo info) {  if ((info.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0) {  // 代表的是系统的应用,但是被用户升级了. 用户应用  return true;  } else if ((info.flags & ApplicationInfo.FLAG_SYSTEM) == 0) {  // 代表的用户的应用  return true;  }  return false;  }  } 
Android中获取系统上安装的APP信息