安卓之Intent

一:什么是Intent

在一个android应用中,Intent是对执行某个操作的一个抽象描述,Intent负责提供组件之间相互调用的相关信息传递,实现调用

者和被调用者之间的解耦。

二:Intent的属性

Intent是对执行某个操作的一个抽象描述,其描述的内容包括,对执行动作Action的描述,对操作数据的描述,还有四种附加属性

的描述。分别介绍如下:

Action,对执行动作的描述,是个字符串,是对所执行的动作的描述,在Intent类中定义了一些字符串常量做为标准动作,譬如

public static final String ACTION_DIAL = "android.intent.action.DIAL"

public static final String ACTION_SENDTO = "android.intent.action.SENDTO"

我们还可以自定义Action,并定义相应的Activity来处理我们自定义的行为。

data,是对执行动作所要操作的数据的描述,Android中采用URI来表示数据,譬如在联系人应用中,指向联系人1的URI可能是

content://contacts/1(由content provider提供的数据类型是content).结合Action和data可以基本表达出意图

·VIEW_ACTION content://contacts/1-显示标示符为"1"的联系人的详细信息

·EDIT_ACTION content://contacts/1-编辑标示符为"1"的联系人的详细信息

·VIEW_ACTION content://contacts/ -显示所有联系人的列表

·PICK_ACTION content://contacts/ -显示所有联系人的列表,并且允许用户在列表中选择一个联系人,然后把这个联系人返回

给父Activity。例如:电子邮件客户端可以使用这个intent,要求用户在联系人列表中选择一个联系人。

除了Action和data之外,还有四个属性

catagory类别,是被请求组件的额外描述信息。intent类中也定义了一组字符串常量表示intent不同的类别。API文档中有详细列表

public static final String CATEGORY_LAUNCHER = "android.intent.category.LAUNCHER";
public static final String CATEGORY_PREFERENCE = "android.intent.category.PREFERENCE";
extra附加信息 除了data之外,还可以通过这个附加信息,extra属性使用Bundle类型进行数据传递,我们可以把Bundle当做HashMap来理解,附加数据可以通过intent.putExtras()和intent.getExtras()进行传入和读取。就像这样,获取附加信息

Bundle bundle = intent.getExtras();

添加附加信息:Bundle bundle = new Bundle();

intent.putExtras(bundle);


component组件 显示指定intent的目标组件的名称。如果指定了一个component属性,系统会直接使用它指定的组件,而非匹配查找


type数据类型。显示指定intent的数据类型,一般intent的数据类型都能够根据数据本身进行判定,但是通过设置这个属性,可以强制采用显示指定。


三、解析Intent


Intent是一种在不同组件之间传递的请求信息,是应用程序发出的请求和意图,作为一个完整的消息传递机制,Intent不仅需要发送端,还需要接收端。


当指定了component属性后,就是显式的指定了目标组件,也就是接收端。如果没有明确指定目标组件,那么Android系统会使用 Intent 里的(action,data,category)
三个属性来寻找和匹配接收端。


四、IntentFilter


应用程序组件可以使用IntentFilter来向系统说明自己可以响应和处理那些Intent请求。组件一般通过AndroidManifest.xml文件的<Intent-Filter>描述。


<activity android:name=”.MainTinyPhone” android:label=”@string/app_name”>


<intent-filter>


<action android:name=”android.intent.action.MAIN” />


<category android:name=”android.intent.category.LAUNCHER” />


</intent-filter>


</activity>





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值