检查是否有应用监听我的意图

Check if there is an app listening to my intent

如何知道我要发布的意向是否会被提前回复?

构建意图后,我尝试了这个,但它不起作用:

Intent fc = ....
                
PackageManager manager = context.getPackageManager();
List<ResolveInfo> list = manager.queryIntentActivities(fc, 0);            
startActivityForResult(fc, 1);

尽管 list 有 0 个元素,但 intent 打开了一个应用程序。

或者,设置 MATCH_ALL 以防止对结果进行任何过滤

public static final int MATCH_ALL = 131072;

还有更多标志可以尝试。将 0 替换为其他。

https://developer.android.com/reference/android/content/pm/PackageManager#queryIntentActivities(android.content.Intent,%20int)

在 Android 11 及更高版本上,要在 PackageManager 上使用许多(大多数?)方法,您需要在清单中包含一个 <queries> 元素,用于标识应用程序(或您要通过 PackageManager 查找的应用标准)。如果没有 <queries> 元素,package visibility 规则会将您的结果限制为您自己的应用程序和一些系统应用程序。