黑马程序员技术交流社区

标题: 分享一段Android获取应用程序列表的代码 [打印本页]

作者: heshiwei    时间: 2015-9-22 10:35
标题: 分享一段Android获取应用程序列表的代码
可获取APP的图标、名称、包名、安装路径(SD卡or内存)、应用程序类型(系统应用or用户应用)等信息

  1. public class AppInfoUtils {
  2.         public static List<AppInfoModel> getAppInfos(Context context){
  3.                 List<AppInfoModel> appInfos = new ArrayList<AppInfoModel>();
  4.                
  5.                 PackageManager packageManager = context.getPackageManager();
  6.                 List<PackageInfo> installedPackages = packageManager.getInstalledPackages(0);
  7.                
  8.                 for (PackageInfo packageInfo : installedPackages) {
  9.                         //packageInfo.applicationInfo就相当于对应AndroidMenifest中的信息
  10.                        
  11.                         //获取应用程序的图标
  12.                         Drawable appIcon = packageInfo.applicationInfo.loadIcon(packageManager);
  13.                         //获取应用程序的名称
  14.                         String appName = (String) packageInfo.applicationInfo.loadLabel(packageManager);
  15.                         //获取应用程序的包名
  16.                         String packageName = packageInfo.packageName;
  17.                        
  18.                         //获取应用程序的资源文件大小
  19.                         String sourceDir = packageInfo.applicationInfo.sourceDir;
  20.                         File resourceFile = new File(sourceDir);
  21.                         long appSize = resourceFile.length();
  22.                
  23.                         //App的类型
  24.                         //int appType = sourceDir.startsWith("/data/app/") ? AppInfoModel.APP_TYPE_USER : AppInfoModel.APP_TYPE_SYSTEM;
  25.                        
  26.                         int appType = (packageInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0 ? AppInfoModel.APP_TYPE_SYSTEM : AppInfoModel.APP_TYPE_USER;
  27.                         int appPositionType = (packageInfo.applicationInfo.flags & ApplicationInfo.FLAG_EXTERNAL_STORAGE )!= 0 ? AppInfoModel.APP_TYPE_POSTION_SD : AppInfoModel.APP_TYPE_POSTION_SD;

  28.                         AppInfoModel model = new AppInfoModel();
  29.                         model.setAppName(appName);
  30.                         model.setApkPackageName(packageName);
  31.                         model.setApkSize(appSize);
  32.                         model.setAppIcon(appIcon);
  33.                         model.setAppPositionType(appPositionType);
  34.                         model.setAppType(appType);
  35.                        
  36.                         appInfos.add(model);
  37.                 }
  38.                
  39.                 return appInfos;
  40.         }
  41. }
复制代码


作者: heshiwei    时间: 2015-9-22 10:36
沙发还是自己家的舒服!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2