Android中Intent详解
2016-05-28 14:51
381 查看
Intent是“意图”的意思,是Android中用来启动组件的,也是Android
中用于组件之间的通信的。
Intent的属性
Intent有很多的属性,每一个属性都有其特定的作用。
(1)Component属性
Intent的Component属性是用来指明Intent要启动哪个组件的。
Intent的Component属性需要接受一个ComponentName对象。ComponentName有以下几个构造方法:
ComponentName(Context pkg,Class< ? > cls);
ComponentName(Context pkg,String cls);
ComponentName(String pkg,String cls);
ComponentName的构造方法都是创建指定包下的指定类对应的组件。
Intent的setComponentName()方法用来设置Intent的Component属性。指定了Component属性的Intent,是明确了要启动哪个组件,因此这种Intent又被称之为显示Intent。没有设置Component属性的Intent被称之为隐式Intent,隐式Intent是没有明确指定要启动哪个组件,隐式Intent会根据指定的规则启动符合条件的组件。
Intent中以下几个方法也可以设置Intent要启动的组件:
setClass(Context pkg,Class< ? >cls)
setClassName(Context pkg,Stirng cls)
setClassName(String pkg,String cls)
(2)Action、Category属性
Intent的Action、Category属性的属性值都是一个普通的字符串。Action属性表示Intent将要完成的一个“抽象”动作。Category属性则用于为Action添加额外的附加类别信息。通常Action、Category属性都是结合使用的。
Intent分别通过setAction()方法和addCategory()方法来设置Intent的Action和Category属性。
我们可以这样来理解Intent的Action、Category属性:
Action、Category属性可以被看做是“要求”,一个Intent只能设置一个Action要求,可以设置多个Category要求,通过< intent-filter >属性来设置组件能够满足的要求。一个组件可以满足多个Action要求、多个Category要求。如果组件满足的要求大于等于Intent指定的要求,那么Inten就可以启动这个组件。
但是这里要注意一点,但我们创建Intent对象时,Intent对象就有一个默认的category属性,属性值为android.intent.category.DEFAULT,所以目标组件的< intent-filter >配置中,至少要配置一个< category >属性-< category name=”android.intent.category.DEFAULT”/>。
在AndroidManifest.xml中组件配置的< intent-filter >中通过
< action name=”” >
< category name=”” >
来配置组件满足的Action与Category要求。
(3)Data、Type属性
Intent的Data属性是用来为Action提供操作数据的,Data属性接收一个Uri对象,Uri字符串满足如下格式:
schema://host:port/path
有时候port是被省略的。
Type属性是用于指定Data属性指定的Uri的MIME类型,这种MIME类型可以是任何自定义的MIME类型,只要符合abc/xyz格式的字符串即可。
Data属性与Type属性的关系比较微妙,这两个属性会相互覆盖。
1)如果Intent先设置Data属性,再设置Type属性,那么Data属性会被覆盖,也就相当于只设置了Type属性。
2)如果Intent先设置了Type属性,再设置Data属性,那么Type属性会被覆盖,也就相当于只设置了Data属性。
3)如果希望Intent既有Data属性又有Type属性,可以调用Intent的setDataAndType()方法。
Data、Type属性与Action、Category属性一样都可以被理解成“要求”,组件满足的要求必须大于等于Intent指定的这些要求,Intent才能够启动这个组件。
组件在配置Data、Type与组件配置Action、Category是一样的,都是在AndroidManifest.xml中的组件的配置的< intent-filter >中配置。
Data与Type属性都是用< data/>这个标签来配置的。
< data
android:schema=””
android:host=””
android:port=””
android:path=””
>
(4)Extra属性
Intent的Extra属性用于携带数据的。当需要传递数据到启动的组件中时,就可以使用Extra属性。
Intent可以携带基本类型的数据,String类型的数据,可以携带一个列表,也可以携带自定义对象类型的数据。
中用于组件之间的通信的。
Intent的属性
Intent有很多的属性,每一个属性都有其特定的作用。
(1)Component属性
Intent的Component属性是用来指明Intent要启动哪个组件的。
Intent的Component属性需要接受一个ComponentName对象。ComponentName有以下几个构造方法:
ComponentName(Context pkg,Class< ? > cls);
ComponentName(Context pkg,String cls);
ComponentName(String pkg,String cls);
ComponentName的构造方法都是创建指定包下的指定类对应的组件。
Intent的setComponentName()方法用来设置Intent的Component属性。指定了Component属性的Intent,是明确了要启动哪个组件,因此这种Intent又被称之为显示Intent。没有设置Component属性的Intent被称之为隐式Intent,隐式Intent是没有明确指定要启动哪个组件,隐式Intent会根据指定的规则启动符合条件的组件。
Intent中以下几个方法也可以设置Intent要启动的组件:
setClass(Context pkg,Class< ? >cls)
setClassName(Context pkg,Stirng cls)
setClassName(String pkg,String cls)
(2)Action、Category属性
Intent的Action、Category属性的属性值都是一个普通的字符串。Action属性表示Intent将要完成的一个“抽象”动作。Category属性则用于为Action添加额外的附加类别信息。通常Action、Category属性都是结合使用的。
Intent分别通过setAction()方法和addCategory()方法来设置Intent的Action和Category属性。
我们可以这样来理解Intent的Action、Category属性:
Action、Category属性可以被看做是“要求”,一个Intent只能设置一个Action要求,可以设置多个Category要求,通过< intent-filter >属性来设置组件能够满足的要求。一个组件可以满足多个Action要求、多个Category要求。如果组件满足的要求大于等于Intent指定的要求,那么Inten就可以启动这个组件。
但是这里要注意一点,但我们创建Intent对象时,Intent对象就有一个默认的category属性,属性值为android.intent.category.DEFAULT,所以目标组件的< intent-filter >配置中,至少要配置一个< category >属性-< category name=”android.intent.category.DEFAULT”/>。
在AndroidManifest.xml中组件配置的< intent-filter >中通过
< action name=”” >
< category name=”” >
来配置组件满足的Action与Category要求。
(3)Data、Type属性
Intent的Data属性是用来为Action提供操作数据的,Data属性接收一个Uri对象,Uri字符串满足如下格式:
schema://host:port/path
有时候port是被省略的。
Type属性是用于指定Data属性指定的Uri的MIME类型,这种MIME类型可以是任何自定义的MIME类型,只要符合abc/xyz格式的字符串即可。
Data属性与Type属性的关系比较微妙,这两个属性会相互覆盖。
1)如果Intent先设置Data属性,再设置Type属性,那么Data属性会被覆盖,也就相当于只设置了Type属性。
2)如果Intent先设置了Type属性,再设置Data属性,那么Type属性会被覆盖,也就相当于只设置了Data属性。
3)如果希望Intent既有Data属性又有Type属性,可以调用Intent的setDataAndType()方法。
Data、Type属性与Action、Category属性一样都可以被理解成“要求”,组件满足的要求必须大于等于Intent指定的这些要求,Intent才能够启动这个组件。
组件在配置Data、Type与组件配置Action、Category是一样的,都是在AndroidManifest.xml中的组件的配置的< intent-filter >中配置。
Data与Type属性都是用< data/>这个标签来配置的。
< data
android:schema=””
android:host=””
android:port=””
android:path=””
>
(4)Extra属性
Intent的Extra属性用于携带数据的。当需要传递数据到启动的组件中时,就可以使用Extra属性。
Intent可以携带基本类型的数据,String类型的数据,可以携带一个列表,也可以携带自定义对象类型的数据。
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories