queryIntentActivities()采用什么标志?

时间:2011-07-01 23:16:40

标签: java android android-intent

queryIntentActivities()采用了什么标志(MATCH_DEFAULT_ONLY除外)?

我问,因为我希望我的应用程序检查我的其他应用程序是否已安装。因为它使用的是Intent.ACTION_MAIN,所以似乎没有必要使用MATCH_DEFAULT_ONLY。我应该使用零作为标志,还是有更合适的东西?

2 个答案:

答案 0 :(得分:0)

如果您希望应用程序检查是否安装了其他应用程序,则可以使用PackageManager类的getApplicationInfo(String packageName, int flags)方法。传递要查找的包名称,并将0作为第二个参数传递。 将此方法放在try-catch块中,如果方法抛出PackageManager.NameNotFoundException,则表示未安装其他应用程序:)

答案 1 :(得分:0)

如果您查看AOSP中PackageManger类的source code,那将有助于回答其他可能的标志。

PackageManger类具有下面的代码,

/** @hide */
    @IntDef(flag = true, prefix = { "GET_", "MATCH_" }, value = {
            GET_META_DATA,
            GET_RESOLVED_FILTER,
            GET_SHARED_LIBRARY_FILES,
            MATCH_ALL,
            MATCH_DEBUG_TRIAGED_MISSING,
            MATCH_DISABLED_COMPONENTS,
            MATCH_DISABLED_UNTIL_USED_COMPONENTS,
            MATCH_DEFAULT_ONLY,
            MATCH_DIRECT_BOOT_AUTO,
            MATCH_DIRECT_BOOT_AWARE,
            MATCH_DIRECT_BOOT_UNAWARE,
            MATCH_SYSTEM_ONLY,
            MATCH_UNINSTALLED_PACKAGES,
            MATCH_INSTANT,
            GET_DISABLED_COMPONENTS,
            GET_DISABLED_UNTIL_USED_COMPONENTS,
            GET_UNINSTALLED_PACKAGES,
    })

在这里您可以看到MATCH_DEFAULT_ONLY标志以及提到的其他几个标志。