//获取到包的管理者
PackageManager manager=context.getPackageManager();
<span style="white-space:pre"> </span>//获取所有程序的信息集合
List<PackageInfo> installedPackages = manager.getInstalledPackages(0);
<span style="white-space:pre"> </span>//遍历获取各种信息
for(PackageInfo info:installedPackages){
//获取到应用程序的图标
Drawable icon = info.applicationInfo.loadIcon(manager);
//获取到应用程序名字
String apkName = info.applicationInfo.loadLabel(manager).toString();
//应用程序的包名
String packageName = info.applicationInfo.packageName;
//获取到apk资源的路径
String sourceDir = info.applicationInfo.sourceDir;
File file=new File(sourceDir);
//apk大小
long apkSize=file.length();
//获取到安装应用程序的标记
int flags=info.applicationInfo.flags;
//判断是否为系统应用
if((flags&ApplicationInfo.FLAG_SYSTEM)!=0){
//表示系统app
appInfo.setUserApp(false);
}else{
//表示用户app
appInfo.setUserApp(true);
}
//判断安装在sd卡还是手机没存
if((flags&ApplicationInfo.FLAG_EXTERNAL_STORAGE)!=0){
//表示在sd卡
appInfo.setRom(false);
}else{
//表示在手机内存
appInfo.setRom(true);
}