獲取已安裝應用資訊,判斷是否為系統應用
阿新 • • 發佈:2019-01-10
/**
* 獲取已安裝應用資訊
* @param includeSystemApps true:包含系統應用 false:不包含系統應用
*/
@SuppressWarnings("static-access")
private void getAppInfo(boolean includeSystemApps) {
PackageManager pm = mActivity.getPackageManager();
// 放到子執行緒中執行
List<AppInfo> appInfos = new ArrayList<>();
List<PackageInfo> packageInfos = mActivity.getPackageManager().getInstalledPackages(0);
for (PackageInfo packageInfo : packageInfos) {
/*if ((!includeSystemApps) && null == packageInfo.versionName) {
continue;
}*/
//判斷是否為非系統預裝的應用 (大於0為系統預裝應用,小於等於0為非系統應用)
if (!includeSystemApps) {
if ((packageInfo.applicationInfo.flags & packageInfo.applicationInfo.FLAG_SYSTEM) > 0) {
continue;
}
}
AppInfo appInfo = new AppInfo();
// 獲得應用名
appInfo.setName(pm.getApplicationLabel(packageInfo.applicationInfo).toString());
// 獲得應用包名
appInfo.setPackageName(packageInfo.packageName);
appInfo.setIcon(packageInfo.applicationInfo.loadIcon(pm));
appInfos.add(appInfo);
}
}