第6章 使用Intent和IntentFilter进行通信-【千锋教育】Android从入门到精通
2023-03-21
|
18页
|
250人阅读
|
0人下载
教辅
内容正文:
第6章 使用Intent和IntentFilter进行通信
Intent对象简述
Intent属性及intent-filter配置
理解Intent对Android应用的作用
掌握Intent-filter配置
掌握Intent的使用方法
掌握Intent几种常用的属性的使用方法
学 习 目 标
LEARNING OBJECTIVES
初心至善 匠心育人
6.1
Intent对象简述
目录
Contents
初心至善 匠心育人
6.1 Intent对象简述
在第1章介绍Android组件时简单介绍了Intent和IntentFilter的概念,在第5章例5-2中举例示范了显式与隐式两种方式启动目标Activity。并且前面介绍的很多例子也都使用到了Intent,相信大家已经对Intent不陌生了。下面对Intent对象进行更全面的介绍。
前面已经介绍到,Activity、Service和BroadcastReceiver都是通过Intent启动,并且可以通过Intent传递数据。下表列出了使用Intent启动不同组件的方法。
初心至善 匠心育人
4
6.1 Intent对象简述
关于Service与BroadcastReceiver的启动,在后面的章节中会详细讲解。这里只介绍Intent的相关内容。Intent包含的属性主要包括Component、Action、Category、Data、Type、Extra和Flag这7种属性。其中Extra属性在前面的很多示例中都有涉及,就不做介绍了。接下来详细介绍剩余6个属性的作用,以及使用示例。
初心至善 匠心育人
5
6.2
Intent属性及intent-filter配置
6.2.1
Component属性
6.2.2
Action、Category属性与intent-filter配置
6.2.3
Data、Type属性与intent-filter配置
6.2.4
Flag属性
目录
Contents
初心至善 匠心育人
6.2.1 Component属性
Component单词有“组件”的意思,顾名思义,使用Component属性时需要传入目标组件名,来看一个具体使用示例。
6.2 Intent属性及intent-filter配置
初心至善 匠心育人
6.2.1 Component属性
可以看到在上面第11-15行代码中,Component属性中指定了要启动的Activity名称,很明显这里采用了显式Intent启动Activity。在之前的例子中,也有很多采用显式Intent启动目标Activity的例子,可以发现在这些例子中,显式启动目标组件是以下的方式:
6.2 Intent属性及intent-filter配置
显示启动明确指定了当前组件名与目标组件名。那么上面代码中的显式启动方式,与例6-1中的显式启动方式有什么区别呢?其实是一样的。例6-1中第11-15行首先创建了ComponentName对象,并将该对象设置成Intent对象的Component属性,这样应用程序即可根据该Intent “意图”启动指定的SecondActivity。当为Intent设置Component属性时,Intent提供了一个构造器用来直接指定目标组件名称。
初心至善 匠心育人
6.2.1 Component属性
当程序通过显式Intent(无论上面两种中的哪一种)启动目标组件时,被启动的组件不需要配置intent-filter元素就能被启动。
例6-1中的SecondActivity布局文件中只有一个TextView,这里不予展示,直接来看Java代码。
6.2 Intent属性及intent-filter配置
上面程序中第7行代码用来接收传过来的Component属性,TextView组件用于显示Component中的组件名和包名。
初心至善 匠心育人
6.2.2 Action、Category属性与intent-filter配置
Action与Category的属性值都是普通的字符串,其中Action设置Intent要完成的抽象动作,Category为Action添加额外的附加类别信息。通常这两个属性是结合使用的,在之前的很多示例中,观察对应的AnroidManifest.xml清单文件就会发现,凡是作为程序的入口Activity,都会配置以下几行代码:
6.2 Intent属性及intent-filter配置
上面代码中action与category都指定了name值,其中action指定name值为“android.intent.action.MAIN”,该值是Android系统指定程序入口时必须配置的。Category指定name值为“android.intent.cat
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。