@Deprecated
public List<String> getAllApps() {
List<String> packageList = new ArrayList<>();
final PackageManager packageManager = mContext.getPackageManager();
List<PackageInfo> resolveInfoList = packageManager.getInstalledPackages(0);
Log.d("caowj", "全部的应用数量:" + resolveInfoList.size());
for (PackageInfo info : resolveInfoList) {
// if ((info.applicationInfo.flags & info.applicationInfo.FLAG_SYSTEM) <= 0) {
// //非系统应用
// packageList.add(info.packageName);
// }
packageList.add(info.packageName);
}
Log.d("caowj", "非系统应用数量:" + packageList.size());
return packageList;
}
public List<String> getAllInstalledApkInfo() {
List<String> packageList = new ArrayList<>();
Intent intent = new Intent(Intent.ACTION_MAIN, null);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
final PackageManager packageManager = mContext.getPackageManager();
List<ResolveInfo> resolveInfoList = packageManager.queryIntentActivities(intent, 0);
Log.d("caowj", "全部的应用数量:" + resolveInfoList.size());
for (ResolveInfo resolveInfo : resolveInfoList) {
ActivityInfo activityInfo = resolveInfo.activityInfo;
if (!isSystemPackage(activityInfo)) {
// if (!name.contains("huawei") && !name.contains("android")) {
packageList.add(activityInfo.applicationInfo.packageName);
Log.i("TAG", "getAppProcessName: " +
activityInfo.applicationInfo.loadLabel(packageManager).toString() + "---" +
activityInfo.packageName);
}
}
Log.d("caowj", "非系统应用数量:" + packageList.size());
return packageList;
}
上面两种写法在Android 11上无效:
需要添加权限:
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" />
通过 PackageInfo 获取具体信息方法:
通过 ResolveInfo 获取具体信息方法: