实体类
public class AppInfo {
private String apkpath;
public String getApkpath() {
return apkpath;
}
public void setApkpath(String apkpath) {
this.apkpath = apkpath;
}
/**
* 应用程序的图标
*/
private Drawable icon;
/**
* 应用程序名称
*/
private String name;
/**
* 应用程序安装的位置,true手机内存 ,false外部存储卡
*/
private boolean inRom;
/**
* 应用程序的大小
*/
private long appSize;
/**
* 是否是用户程序 true 用户程序 false 系统程序
*/
private boolean userApp;
/**
* 应用程序的包名
*/
private String packname;
public Drawable getIcon() {
return icon;
}
public void setIcon(Drawable icon) {
this.icon = icon;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public boolean isInRom() {
return inRom;
}
public void setInRom(boolean inRom) {
this.inRom = inRom;
}
public long getAppSize() {
return appSize;
}
public void setAppSize(long appSize) {
this.appSize = appSize;
}
public boolean isUserApp() {
return userApp;
}
public void setUserApp(boolean userApp) {
this.userApp = userApp;
}
public String getPackname() {
return packname;
}
public void setPackname(String packname) {
this.packname = packname;
}
@Override
public String toString() {
return "AppInfo [name=" + name + ", inRom=" + inRom + ", appSize="
+ appSize + ", userApp=" + userApp + ", packname=" + packname
+ "]";
}
——————————————————————————————
解析
public class AppInfoParser {
/**
* 获取手机里面的所有的应用程序
* @param context 上下文
* @return
*/
public static List getAppInfos(Context context){
//得到一个java保证的 包管理器。
PackageManager pm = context.getPackageManager();
List packInfos = pm.getInstalledPackages(0);
List appinfos = new ArrayList();
for(PackageInfo packInfo:packInfos){
AppInfo appinfo = new AppInfo();
String packname = packInfo.packageName;
appinfo.setPackname(packname);
Drawable icon = packInfo.applicationInfo.loadIcon(pm);
appinfo.setIcon(icon);
String appname = packInfo.applicationInfo.loadLabel(pm).toString();
appinfo.setName(appname);
//应用程序apk包的路径
String apkpath = packInfo.applicationInfo.sourceDir;
appinfo.setApkpath(apkpath);
File file = new File(apkpath);
long appSize = file.length();
appinfo.setAppSize(appSize);
//应用程序安装的位置。
int flags = packInfo.applicationInfo.flags; //二进制映射 大bit-map
if((ApplicationInfo.FLAG_EXTERNAL_STORAGE&flags)!=0){
//外部存储
appinfo.setInRom(false);
}else{
//手机内存
appinfo.setInRom(true);
}
if((ApplicationInfo.FLAG_SYSTEM&flags)!=0){
//系统应用
appinfo.setUserApp(false);
}else{
//用户应用
appinfo.setUserApp(true);
}
appinfos.add(appinfo);
appinfo = null;
}
return appinfos;
}
}