gpt4 book ai didi

android - 如何在 Android 中获取已安装的应用程序而没有系统应用程序?

转载 作者:IT王子 更新时间:2023-10-28 23:28:26 26 4
gpt4 key购买 nike

我想获取出现在菜单屏幕中的所有应用程序。但是,现在我只获取用户安装的应用程序或所有应用程序(包括系统应用程序)。

我当前的代码是:

    final PackageManager pm = getActivity().getPackageManager();
List<PackageInfo> apps = pm.getInstalledPackages(PackageManager.GET_META_DATA);

ArrayList<PackageInfo> aux = new ArrayList<PackageInfo>();

for (int i = 0; i < apps.size(); i++) {
if (apps.get(i).versionName != null && ((apps.get(i).applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 1)) {
aux.add(apps.get(i));
}

使用此代码,我可以获取用户安装的应用程序,如果我注释 'if' 指令,我将获取系统应用程序。

所以,我想让用户安装应用程序以及联系人、图库等应用程序。

更新:

    final PackageManager pm = getActivity().getPackageManager();
Intent intent = new Intent(Intent.ACTION_MAIN, null);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
List<ResolveInfo> apps = pm.queryIntentActivities(intent, PackageManager.GET_META_DATA);

最佳答案

final PackageManager pm = getPackageManager();
List<ApplicationInfo> packages = pm.getInstalledApplications(PackageManager.GET_META_DATA);

使用 PackageInfo:

private boolean isSystemPackage(PackageInfo packageInfo) {
return ((packageInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0);
}

使用 ResolveInfo:

private boolean isSystemPackage(ResolveInfo resolveInfo) {
return ((resolveInfo.activityInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0);
}

使用 ApplicationInfo:

private boolean isSystemPackage(ApplicationInfo applicationInfo) {
return ((applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0);
}

这会过滤系统包。见 this问题。致谢:Nelson Ramirez 和 Kenneth Evans。

关于android - 如何在 Android 中获取已安装的应用程序而没有系统应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17504169/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com