检查是不是有应用程序在监听我的意图
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 或更高版本,您的清单中是否有<queries>
元素来处理 the package visibility rules?
Android 11。是的,你成功了。谢谢!
【参考方案1】:
在 Android 11 及更高版本上,要在 PackageManager
上使用许多(大多数?)方法,您需要在清单中包含一个 <queries>
元素,以标识您想要通过以下方式查找的应用(或应用标准) PackageManager
。如果没有 <queries>
元素,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
。没有工作。以上是关于检查是不是有应用程序在监听我的意图的主要内容,如果未能解决你的问题,请参考以下文章