查询packageManager处理意图时GET_INTENT_FILTERS和MATCH_DEFAULT_ONLY之间的区别

 霍任芳 发布于 2023-02-11 16:51

当我查询packageManager时,我使用GET_INTENT_FILTERS和MATCH_DEFAULT_ONLY得到不同的结果.我试图找到我需要设置的正确过滤器.有人可以解释一下这个区别吗?

final PackageManager mgr = mContext.getPackageManager();
List list = mgr.queryIntentActivities(intent,
                PackageManager.GET_INTENT_FILTERS);

David Wasser.. 7

如果指定MATCH_DEFAULT_ONLY调用,则将返回ResolveInfo与提供的所有活动匹配的对象Intent.当进行匹配,Android将只考虑有活动,CATEGORY=DEFAULT他们在清单的定义.这是相同的匹配行为打电话时使用startActivity()Intent.如果未指定此标志,则查询将返回所有匹配的活动,即使是那些不包含CATEGORY=DEFAULT在其中的活动.当然,如果Intent您传递的内容queryIntentActivities()已经包含CATEGORY=DEFAULT,则不需要该标志.

如果指定GET_INTENT_FILTERS,结果ResolveInfo对象也将包含IntentFilter已成功匹配的对象.您可以通过此访问ResolveInfo.filter.

这两个标志并不相互排斥.MATCH_DEFAULT_ONLY控制如何执行匹配以确定ResolveInfo要返回的对象.GET_INTENT_FILTERS控制在ResolveInfo对象本身中返回的(附加)信息.如果你愿意,你可以像这样指定两个标志MATCH_DEFAULT_ONLY | GET_INTENT_FILTERS

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有