- 1、本文档共16页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
尚学堂Android培训Intent对象与Intent Filter过滤匹配过程详解
北京尚学堂提供
我们知道,Intent是分两种的:显式Intent和隐式Intent。如果一个Intent明确指定了要启动的组件的完整类名,那么这个Intent就是显式Intent,否则就是隐式Intent。当我们用一个显式Intent去启动组件时,Android会根据Intent对象所提供的component name直接找到要启动的组件,当我们用一个隐式的Intent去启动组件时,Android系统就无法直接知道要启动的组件名称了,本文就是讲解Android系统如何根据隐式Intent查找匹配到要启动的组件。
当Android系统接收到一个隐式Intent要启动一个Activity(或其他组件)时,Android会根据以下三个信息比较Intent的信息与注册的组件的intent-filter的信息,从而为该Intent选择出最匹配的Activity(或其他组件):
intent中的action
intent中的category
intent中的data(包含Uri以及data的MIME类型)
也就是隐式intent对象要满足要启动的目标组件中注册的intent-filter中的action /、category /、data /三个标签中的信息,即要分别通过action测试、category测试以及data测试。intent-filter信息是在Android的manife文件中描述的,顾名思义,intent-filter是intent过滤器,就是用来过滤intent的。
如果隐式intent对象同时通过了某个组件的中intent-filter的action测试、category测试以及data测试,那么该组件就可以被intent对象所启动。如果隐式intent对象没有通过系统中任何组件的intent-filter测试,那么就没有Android系统无法找到该intent对象要启动的组件。下面我们依次看一下如何才能通过这三个测试。Action测试
为了指定能够接收并处理的Intent的类型,组件可以在intent-filter中声明其支持0个或多个action,例如:
intent-filter
action android:name=com.ispring.action.ACTION_TEST1 /
action android:name=com.ispring.action.ACTION_TEST2 /
category android:name=ent.category.DEFAULT /
/intent-filter
intent对象可以通过setAction()方法设置唯一的一个action值。对于action测试,需要分两种情况:
intent对象设置了action?如果intent对象通过调用setAction()方法设置了action的值,那么只有当组件的intent-filter中包含了intent对象中的action值的时候,action测试才通过,否则无法通过。?举个例子,假设我们的Activity的intent-filter如下所示:
intent-filter
action android:name=com.ispring.action.ACTION_TEST1 /
action android:name=com.ispring.action.ACTION_TEST2 /
category android:name=ent.category.DEFAULT /
data android:scheme=ispring android:host= /
/intent-filter
下面的intent对象可以通过上面intent-filter里面的action测试:
Intent intent = new Intent();
intent.setAction(com.ispring.action.ACTION_TEST1);
Uri uri = Uri.parse(ispring:///sunqunsunqun);
intent.setData(uri);
该intent之所以能通过action测试是因为intent-filter中包含该intent的action值com.ispring.action.ACTION_TEST1。
下面的intent对象无法通过上面intent-filter里面的action测试:
Intent intent = new Intent();
intent.setAction(com.ispring.action.ACTION_TEST3);
Uri uri = Uri.parse(ispring:///sunqunsunq
您可能关注的文档
- 室外无线设计安装.doc
- 家居用品词汇.doc
- 密苏里州|Missouri,MO.docx
- 密码门逃生.doc
- 富士通DPK8500E2 win7系统驱动安装步骤.docx
- 导游实务翻译.ppt
- 小东教育托福词汇单.doc
- 小学四年级语文上册语文百花园五PPT S版.ppt
- 小学英语四年级下册第一单元our_school课件.ppt
- 小学语文S版六年级上册第5课《尼尔斯骑鹅历险记PPT课件》.ppt
- 华师版八年级下册数学精品教学课件 第16章 分式 阶段综合训练【范围:16.1~16.2】.ppt
- 华师版八年级下册数学精品教学课件 第16章 分式 专题强化训练(二) 训练 分式方程的解 (2).ppt
- 华师版八年级下册数学精品教学课件 第16章 分式 16.3 可化为一元一次方程的分式方程 第1课时 分式方程 (2).ppt
- 华师版八年级下册数学精品教学课件 第16章 分式 16.2 分式的运算 1. 分式的乘除.ppt
- 人教版八年级下册数学精品教学课件 预习导学 第十九章 一次函数 19.2 一次函数-19.2.2 一次函数-第1课时 一次函数.ppt
- 人教版八年级下册数学精品教学课件 第16章 特色题型专练一.ppt
- 遂昌县山区经济发展中政府职能的实践与探索.docx
- 互联网浪潮下PDB公司保险营销与服务的变革与升华.docx
- 网络赋能:小学科学探究中校际协作学习活动模式的深度剖析与实践探索.docx
- Quest3D赋能:上海师范大学沉浸式虚拟学习系统的构建与探索.docx
最近下载
- 长螺旋钻孔压灌混凝土旋喷扩孔桩施工方案.doc VIP
- 肺康复ppt优质课件.pptx VIP
- GB-50352-2019-民用建筑设计统一标准.pdf VIP
- 建设工程施工合同示范文本gf-2013-0201)协议书、通用条款、专用条款.docx VIP
- 高考语文阅读理解《鸭子》含答案.docx VIP
- 无菌检查用培养基灭菌后的保存有效期的验证方法.docx VIP
- 输变电工程标准工艺(变电工程电气分册)2022版.docx VIP
- 2025贵州省专业技术人员继续教育公需科目考试题库(2025公需课课程).docx VIP
- 抹灰砂浆规范.docx VIP
- 模具工劳动合同协议书.docx VIP
文档评论(0)