首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >GET_INTENT_FILTERS和MATCH_DEFAULT_ONLY在查询packageManager以处理意图时的区别

GET_INTENT_FILTERS和MATCH_DEFAULT_ONLY在查询packageManager以处理意图时的区别
EN

Stack Overflow用户
提问于 2013-12-10 22:11:23
回答 1查看 4.3K关注 0票数 2

当我使用GET_INTENT_FILTERS和MATCH_DEFAULT_ONLY查询packageManager时,会得到不同的结果。我试图找到正确的过滤器,我需要设置。谁能解释一下区别吗?

代码语言:javascript
运行
复制
final PackageManager mgr = mContext.getPackageManager();
List<ResolveInfo> list = mgr.queryIntentActivities(intent,
                PackageManager.GET_INTENT_FILTERS);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-11 11:13:37

如果指定MATCH_DEFAULT_ONLY,则调用将返回与提供的Intent匹配的所有活动的ResolveInfo对象。在执行匹配时,Android只会考虑清单中的CATEGORY=DEFAULT定义中包含<intent-filter>的活动。这与在startActivity()上调用Intent时使用的匹配行为相同。如果不指定此标志,则查询将返回所有匹配的活动,即使是那些在其<intent-filter>中不包含CATEGORY=DEFAULT的活动。当然,如果传递给queryIntentActivities()queryIntentActivities()已经包含CATEGORY=DEFAULT,则不需要标志。

如果指定GET_INTENT_FILTERS,则生成的ResolveInfo对象还将包含成功匹配的IntentFilter。您可以通过ResolveInfo.filter访问它。

这两个标志并不是相互排斥的。MATCH_DEFAULT_ONLY控制如何执行匹配以确定要返回的ResolveInfo对象。GET_INTENT_FILTERS控制在ResolveInfo对象本身中返回什么(附加)信息。如果需要,可以指定这两个标志,如下面的MATCH_DEFAULT_ONLY | GET_INTENT_FILTERS

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20506406

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档