这是我参与2022首次更文挑战的第3天,活动详情查看:2022首次更文挑战
Intent是由action(动作)、category(类别)、date(数据)、type(数据类型)、component(组件)、extras(扩展信息)和flags(标志位)等部分组成的,其中最常用的是action属性和data属性。
(1)Intent的action属性
action是指Intent要完成的动作,是一个字符串常量。
(2)Intent的category属性。
Intent中的category属性是一个执行动作action的附加信息。例如,CATEGORY_HOME表示放回到Home界面,ALTERNATIVE_GATEGORY则表示当前的Inter是一系列的可选动作中的一个。一个Intent可以包含多个category。
(3)Intent的data属性。
Intent的data属性是执行动作的URL和MIME类型,不同的action由不同的data数据指定。例如:ACTION_EDIT应用应该和要编辑的文档URI匹配,ACTION_VIEW应用应该要和要显示的URI匹配。
大部分情况下,数据类型可以从URI识别出来,content:uri,指明了数据是在本地查找,并通过ContentProvider控制。当然,也可以通过Inter对象的方法setData()来指定URI,setType()来指定数据类型。通过getData()及getType()方法可读取数据URI及数据类型。
(4)Intent的type属性
type属性用于明确指定data属性的数据类型或MIME类型,但是通常来说,当Inter不指定data属性时,type属性才会起作用,否则Android系统将会根据data属性值来分许数据的类型,所以无需指定type属性。
data和type属性一般只需要一个,通过setData方法会把type属性设置为null。相反通过setType方法会把data属性设置为null,如果想要两个属性同时设置,则要使用setDataAndType()方法。setDataAndType()方法中有两个参数,第一个参数是Uri,第二个参数是数据类型。
(5)Intent的component属性
Intent的component属性指定intent的目标组件的类名称。通常Android会根据Intent中包含的其他属性的信息,比如action、data/type、categorry进行查找,最终找到一个与之匹配的目标组件。但是,如果component属性有指定组件,而不再执行上述查找过程。
(6)Intent的extra属性。
Intent的ertra属性是添加一些组件的附加信息,使用extra可以为组件提供扩展信息。Intent提供了put...()和get...()方法,设置和读取额外的信息。 (7)Intent的flags属性。 flags属性是期望这个意图的运行模式。一个程序启动后系统会为这个程序分配一个task(Android中一组逻辑上在一起的Activity被叫做task,可以理解成一个Activity.堆栈)供其使用,另外同一个task里面可以拥有不同应用程序的Activity。