if ((app.flags & ApplicationInfo.FLAG_SYSTEM) != 0) {
// 系统程序
}else if ((app.flags & ApplicationInfo.FLAG_SYSTEM) <= 0) {
//非系统程序
}else if ((app.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0){
//被用户更新过的系统应用
}else if ((app.flags & ApplicationInfo.FLAG_EXTERNAL_STORAGE) != 0) {
//安装在sd卡的应用
}
app.flags是通过
context.getPackageManager().getInstalledPackages(0)得到List<PackageInfo>,再通过packageInfo.applicationInfo.flags得到的。