如何过滤系统应用程序?

时间:2012-01-12 12:12:33

标签: android filter

我想仅使用其包名过滤系统应用。我怎么能这样做?

我知道下面的函数会过滤系统应用程序,但正如我上面所说的仅使用包名。

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

2 个答案:

答案 0 :(得分:2)

  

我该怎么做?

你没有。这不可能。 “系统应用程序”没有包命名约定。

答案 1 :(得分:0)

  

仅使用包名称

您可以根据软件包名称过滤掉系统应用程序,但最终总是需要应用程序的 ApplicationInfo

您可以使用此方法:

private boolean isSystemPackage(String packageName){
    PackageManager packageManager = MyActivity.this.getPackageManager();
    ApplicationInfo applicationInfo = null;
    try {
        applicationInfo = packageManager.getApplicationInfo(packageName, 0);
    } catch (PackageManager.NameNotFoundException e) {
        e.printStackTrace();
    }
    return ((applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0) ? true
            : false;
}