检查是不是有应用程序在监听我的意图

Posted

技术标签:

【中文标题】检查是不是有应用程序在监听我的意图【英文标题】:Check if there is an app listening to my intent检查是否有应用程序在监听我的意图 【发布时间】:2021-11-13 01:32:00 【问题描述】:

如何知道我要发布的意图是否会提前得到答复?

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

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

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

【问题讨论】:

您使用什么版本的 android 进行测试?如果答案是 Android 11 或更高版本,您的清单中是否有 &lt;queries&gt; 元素来处理 the package visibility rules? Android 11。是的,你成功了。谢谢! 【参考方案1】:

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

【讨论】:

【参考方案2】:

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

public static final int MATCH_ALL = 131072;

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

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

【讨论】:

尝试了几个,特别是PackageManager.MATCH_ALL。没有工作。

以上是关于检查是不是有应用程序在监听我的意图的主要内容,如果未能解决你的问题,请参考以下文章

检查是不是有默认应用程序的选择器意图

应用程序意图= readonly SQL Server连接错误

应用程序意图 = 只读 SQL Server 连接错误

安装应用和免安装应用可能有不同的意图过滤器吗?

PayPal 智能按钮是不是需要意图?

即使在应用程序关闭时也能监听时区变化