获取全部包信息:
/**
*
* 获取系统中的全部包信息
*
* @param context 应用上下文
*
*/
private void getPackageInfos(Context context) {
PackageManager pm = context.getPackageManager();
List<PackageInfo> packageInfos = pm.getInstalledPackages(0);
for (PackageInfo packageInfo : packageInfos) {
ApplicationInfo applicationInfo = packageInfo.applicationInfo;
String packageName = packageInfo.packageName;
if (isSystemApp(applicationInfo)) {
Log.i("弗洛拉鲜花", "系统应用:" + packageName);
} else {
Log.i("弗洛拉鲜花", "安装应用:" + packageName);
}
}
}
方法1:
/**
*
* 判断是否为系统应用程序
*
* @param appInfo 应用程序
*
* @return
*
*/
@SuppressWarnings("static-access")
private boolean isSystemApp(ApplicationInfo appInfo) {
return (appInfo.flags & appInfo.FLAG_SYSTEM) > 0;
}
方法2:
/**
*
* 判断是否为系统应用程序
*
* @param appInfo 应用程序
*
* @return
*
*/
private boolean isSystemApp(ApplicationInfo appInfo) {
/**
* uid是应用程序安装时由系统分配(1000 ~ 9999为系统应用程序保留)
*/
return appInfo.uid > 1000;
}