0

我有列出所有已安装应用程序的代码:

    final PackageManager pm = getPackageManager();
    //get a list of installed apps.
            List<ApplicationInfo> packages = pm
                    .getInstalledApplications(PackageManager.GET_META_DATA);

            for (ApplicationInfo packageInfo : packages) {

                Log.d("Tag", "Installed package :" + packageInfo.packageName); 

            }

如何区分系统应用程序和从市场上安装的应用程序?我想我想出了在包名中搜索“android”并将其标记为系统应用程序的非常规方法。有没有一种传统的方法可以让我只找到第三方(来自市场)应用程序?

4

1 回答 1

0

您可以对检索到的所有软件包调用getInstallerPackageName()。虽然这可以被篡改,但它应该足以满足您的目的。

你也可以使用类似的东西:

List<ApplicationInfo> apps = getPackageManager().getInstalledApplications(0);
for (int i=0; i < apps.size(); i++)
{
    if ((apps.get(i).applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0)
    {
         //System app
   }
}
于 2013-01-13T11:19:27.320 回答