4

我正在执行以下操作以获取应用程序列表,并且我只获取已安装的应用程序,而不是所有应用程序,包括系统应用程序。

我尝试了以下方法:

    packageList1 = getPackageManager().getInstalledPackages(PackageManager.GET_META_DATA);

和这个:

    packageList1 = getPackageManager().getInstalledPackages(0);

对于这两种情况,我得到的应用程序列表与我在手机上安装的应用程序列表相同。

4

2 回答 2

9

您已经通过调用以下命令获得了所有已安装应用程序的列表,包括系统应用程序:

List<ApplicationInfo> apps = getPackageManager().getInstalledPackages(0);

有旗帜的人:

  • ApplicationInfo.FLAG_UPDATED_SYSTEM_APP
  • ApplicationInfo.FLAG_SYSTEM

是系统应用程序。您可以像这样检查标志:

List<ApplicationInfo> apps = getPackageManager().getInstalledApplications(0);
for(ApplicationInfo app : apps) {
    if((app.flags & (ApplicationInfo.FLAG_UPDATED_SYSTEM_APP | ApplicationInfo.FLAG_SYSTEM)) > 0) {
        // It is a system app
    } else {
        // It is installed by the user
    }
}
于 2014-05-12T01:17:09.960 回答
0
List<ApplicationInfo> apps = getPackageManager().getInstalledApplications(0);
for(ApplicationInfo app : apps) {
    if((app.flags & (ApplicationInfo.FLAG_UPDATED_SYSTEM_APP | ApplicationInfo.FLAG_SYSTEM)) > 0) {
        // It is a system app
    } else {
        // It is installed by the user
    }
}
于 2017-12-29T11:54:54.660 回答