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