public class MyAppInfo { private Drawable icon; private String appName; private String packageName; private String versionName; private String appDate; private String codeSize; private String publicSourceDir; public MyAppInfo() { } public String getPublicSourceDir() { return publicSourceDir; } public void setPublicSourceDir(String publicSourceDir) { this.publicSourceDir = publicSourceDir; } public String getCodeSize() { return codeSize; } public void setCodeSize(String codeSize) { this.codeSize = codeSize; } public String getAppDate() { return appDate; } public void setAppDate(String appDate) { this.appDate = appDate; } public String getVersionName() { return versionName; } public void setVersionName(String versionName) { this.versionName = versionName; } public String getPackageName() { return packageName; } public void setPackageName(String packageName) { this.packageName = packageName; } public Drawable getIcon() { return icon; } public void setIcon(Drawable icon) { this.icon = icon; } public String getAppName() { return appName; } public void setAppName(String appName) { this.appName = appName; } }
public class GetAppInfo { public static List getAppInfo(Context context) { List<MyAppInfo> mData = new ArrayList<>(); PackageManager pm = context.getPackageManager(); List<PackageInfo> list = pm.getInstalledPackages(0); for (PackageInfo app : list) { //创建要返回的集合对象 MyAppInfo myAppInfo = new MyAppInfo(); //获取包名 String packageName = app.applicationInfo.packageName; myAppInfo.setPackageName(packageName); //获取应用图片 Drawable appIcon = app.applicationInfo.loadIcon(pm); myAppInfo.setIcon(appIcon); //获取应用名称 String appName = (String) app.applicationInfo.loadLabel(pm); myAppInfo.setAppName(appName); try { //获取应用的版本号 PackageInfo packageInfo = pm.getPackageInfo(packageName, 0); String versionName = packageInfo.versionName; myAppInfo.setVersionName(versionName); //应用第一次安装的时间 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); long appDate1 = packageInfo.firstInstallTime; String appDate = String.valueOf(dateFormat.format(appDate1)); myAppInfo.setAppDate(appDate); //获取应用的大小 String dir = app.applicationInfo.publicSourceDir; String cs = String.valueOf(new File(dir).length()); long size = Long.parseLong(cs); String codeSize = size + ""; myAppInfo.setCodeSize(codeSize); //获取APK文件的路径 String publicSourceDir = app.applicationInfo.publicSourceDir; myAppInfo.setPublicSourceDir(publicSourceDir); } catch (Exception e) { e.printStackTrace(); } mData.add(myAppInfo); } return mData; } }