android - 请问和某个intent匹配的程序列表的排序先后有什么依据?能改变吗?
巴扎黑
巴扎黑 2017-04-17 11:32:31
[Android讨论组]

请问和某个intent匹配的程序列表的排序先后有什么依据?能改变吗?

巴扎黑
巴扎黑

全部回复(1)
PHP中文网

当组件管理服务,在收到请求组件的Intent(设为intentA)后,先查看intentA对象是包含了Component信息,如果有,无须匹配。
如果没有,则会从应用管理服务中获取所有组件的Intent Filter信息,并与intentA目标比较。

比较的算法如下:

1)比较Action,如果intentA未包含Action,或者系统所有的Inent Filter没有匹配的Action,则转到2);

2)比较Data和Type
2-1)如果intentA中无Data或者Type项,那么Intent Filter中也不能有,否则匹配失败;
2-2)如果intentA包含Type,则必须Intent Filter的Type与之对应(可使用通配符比较),否则比配失败;
2-3)如果intentA包含Data,则会将Data的URI信息拆分成Scheme和Authority等部分,逐一与Intent Filter对象中的对应部分进行比较,两者必须完全相等,方可匹配成功。
如果1)和2)都匹配成功,则进入3)

3)匹配Category,如果intentA无Category,则成功;否则,必须要求intentA中包含的所有Category都出现在相应Intent Filter的Category中,不然则匹配失败,即仅当intntA对象的Category项集合是Intent Filter对象Catetory项集合子集时,匹配才能成功。

详情请参考《Android开发精要》第四章第二节。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号