Android笔记——Intent

一、Intent的作用

当Activity需要启动另一个Activity时,程序并没有直接给出需要启动那个Activity,而是通过Intent来表达自己想要启动哪个Activity。除此之外,Intent还能够实现两个Activity之间的数据交换。


二、Intent的属性

1.Component属性:指定Intent的目标组件的类名称。即是,在Intent查找组件可以使用ComponentName进行显式的查找,即是指定了Component属性的Intent已经明确了它要启动哪个组件。组件的名称包括了包的名称和类的名称,而包的名称和类的名称都会声明在AndroidManiferst.xml文件中。

使用Component打开另一个Activity的步骤为:

I:使用ComponentName(String pkg, String cls)来创建一个Component对象。

II:使用setClass()、setComponent()、setClassName()来进行设置启动相应的Activity。

III:startActivity(Intent)来启动相应的Activity。


2.Action属性:Action属性就是一个字符串常量,Action属性代表该Intent所要完成的一个抽象的“动作”。而具体实现这个“动作”的组件它本身并不会管,比如说ACTION_VIEW表示一个抽象的查看的动作,但是谁来实现这个动作Action它本身并不管。而能实现这个“动作”的组件都有一个共同的特点,就是都会在它们各自的Activity的<intent-filter.../>配置中包含该ACTION_VIEW。Ps:一个Intent对象最多能够包含一个Action属性。

使用Action查找符合条件的Activity的步骤为:

I:创建你想要满足条件的Action的字符串常量,比如说“Intent.ACTION_VIEW”。

II:设置Action属性,使用intent.setAction(String str)来进行设置。

III:启动activity。


3.Category属性:Action的附加信息,也就是Intent想要完成的抽象“动作”的条件被Category属性补充的更加具体。Category也是一个字符串常量。Ps:一个Intent对象可以包含很多个Category属性,使用AddCategory(String str)来添加新的Category属性/Ps。

I:创建你想要满足条件的Category字符串常量,比如说“Intent .CATEGORY_HOME”。

II:设置Category属性,使用intent.addCategory(String str)来进行设置。

III:启动activity。


4.Data属性:Data属性通常用于向Action属性提供操作的数据。Data属性接收一个Uri对象,一个Uri对象通常通过这种类型的字符串来表示:scheme://host:port/path。例如content://com.android.contacts/contacts/1,这里省略了port部分。

5.Type属性:Type属性用于指定该Data属性所指定的Uri对应的MIME类型,这种MIME类型可以是任何自定义的MIME类型,只要符合ABC/XYZ格式的字符串即可。

Ps:Data与Type属性的关系是这两个属性会相互覆盖。如果先设置Data属性,后设置Type属性的话,Type属性会覆盖Data属性;相反同理;如果想要Data和Type一起存在话,需要调用Intent的setDataAndType()方法。/Ps

Ps:在AndroidManiferst.xml文件中为组件声明Data和Type属性都通过<data.../>元素。<data.../>元素的格式如下:

<data  android:mimeType=""

android:scheme=""

android:host=""

android:port=""

android:path=""

android:pathPrefix=""

android:pathParttern=""

/>

其中:mineType用于声明该组件所能匹配的intent的Type属性。

    pathPrefix用于声明该组件所能匹配的intent的Data属性的path前缀。

    pathPattern用于声明该组件所能匹配的intent的Data属性的path字符串模板。

对Data属性匹配的说明:Data属性的Uri对象实际上可分为scheme、host、port和path部分,此时并不要求被启动组件的<intent-filter.../>中的<data.../>子元素中的四个属性全部满足。具体说明如下:

1.如果目标组件的<data.../>子元素只指定了android:scheme属性,那么只要intent的Data属性的scheme部分与其相同即可启动该组件。

2.如果目标组件的<data.../>子元素只指定了android:scheme、android:host属性,那么只要intent的Data属性的scheme和host部分与其相同即可启动该组件。

3.接下来的匹配都一样。。

4.说明:如果目标组件的<data.../>只指定android:port属性而不指定android:host属性,那么android:port属性将不会起作用。

/Ps


6.Extra属性:Extra属性常用于多个Action之间进行数据交换,Intent的Extra属性值应该是一个Bundle对象,Bundle对象就像一个Map对象,它可以存入多组key-value对,这样就可以通过intent在不同的Activity之间进行数据交换了。


7.Flag属性:Flag属性用于该Intent添加一些额外的控制旗标,Intent可以调用addFlags()方法来为Intet添加控制旗标。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值