(三)Android Intent和IntentFilter整理笔记
来源:互联网 发布:农村村淘宝服务站 编辑:程序博客网 时间:2024/05/21 10:51
Intent对象的作用:用于组件之间交换信息,例如两个Activity可以把需要交换的数据封装成Bundle对象,然后使用Intent来携带Bundle对象,这样就实现了两个Activity之间的数据交换。当然Intent还能启动Service和BroadcastReceiver。三大组件使用Intent的常用方法:
startActivity(Intent intent);startActivityForResult(Intent intent,int requestCode);ComponentName startService(Intent service);sendBroadcast(Intent intent);具体的使用方法可以参考api:android.content.Intent
关于Intent属性的相关整理:
1.Intent大致包含三种属性:component,Action,Category,Data,Type,Extra和Flag;
1.1关于component属性:component属性需要接受一个componentname对象:
ComponentName comp=new ComponentName(Context context,XXX.class);//XXX.class表示当前Context所在包下的组件,这个函数创建了一个ComponentName对象Intent intent=new Intent();intent.setComponent(cmp);
但是我们常常可以对上述的内容进行简化:
Intent intent=new Intent(Context context,XXX.class);//这两种表示的方法其实都为Intent 设置了component属性。
根据Component属性我们就可以将Intent分为显示Intent和隐式Intent:
显式Intent:明确指定了Component属性,也就是明确指出了将要启动的是哪个组件,上面的例子就是显式Intent的表示方法;
隐式Intent:需要根据action,category,type,data等信息进行匹配,没有指定component属性的Intent.
1.2Action和Category属性与Intent-filter配置
Intent intent=new intent();intent.setAction(Context.XXXX);intent.addCategory(Context.XXXX);
其中Context.XXX是一个普通字符串,可以是用户自定义的Action/Category字符串(这需要在<intent-filter...../>添加想要的<action.../>和<category..../>子元素);也可以是Android内部提供的Action/Category常量。注意:一个Intent对象最多只能包括一个Action属性,但可以包括多个Category属性。addCategory(),没有时为默认CATEGORY_DEFAULT。在这里可以比较常用的action常量:action常量
Action是一个抽象动作,这个字符串本身并不管由哪个组件来执行,或是怎样执行的问题,只是抽象动作本身,必须由<intent-filter.../>元素进行配置。而当程序通过Intent的Component属性启动某个组件时,被启动的组件几乎不需要使用<intent-filter.../>元素进行配置。
intent-filter标签有三个子元素:
0~N <action../>
0~N <category.../>
0~1 <data.../>
<intent-filter> <action android:name=" "/> <category android:name=" "/> <category android:name="android.intent.category.DEFAULT"/></intent-filter>
1.3 Data、Type属性与Intent-filter配置
1.Data属性通常用于向Action属性提供操作的数据,Intent.setType(String XXXX); Data属性通常接受一个Uri对象,而Uri字符串满足scheme://host:post/path 2.Type属性用于指定该Data所指定的URI对象对应的MIME类型 。Intent.setData(String XXXX);
注意:当Intent.setType(String XXXX);和Intent.setData(String XXXX); 同时出现时,后面一个后覆盖前面一个设置。如果需要同时设置这两个属性的话,需要使用setTypeAndData();
3.为组件声明Data,Type属性都通过<data.../>标签。
<data..../>元素支持如下属性:
mimeType:声明该Intent所能匹配的Type属性;
scheme:对应Data属性的scheme部分;
host,post,path:分别对应Data的host,post,path部分;
注意:当只有post属性而没有host属性,或是只有path,那么这两个属性将会失效,也就是说,即使Intent与他们匹配也是没有用的。
4.在匹配的时候,只要Intent的属性与<data.../>子元素指定的属性匹配就可以启动该组件。
1.4Extra属性通常用于在多个Action之间进行数据交换
1.5Flag属性用于为Intent添加一些额外的控制旗标
0 0
- (三)Android Intent和IntentFilter整理笔记
- android笔记--Intent和IntentFilter详解
- android笔记--Intent和IntentFilter详解
- android笔记--Intent和IntentFilter详解
- android笔记--Intent和IntentFilter详解(转)
- android笔记--Intent和IntentFilter详解
- android笔记--Intent和IntentFilter详解
- android笔记--Intent和IntentFilter详解
- android笔记--Intent和IntentFilter详解
- android笔记--Intent和IntentFilter详解
- android笔记--Intent和IntentFilter详解
- Android Intent 和 Intentfilter
- 《Android 开发艺术探索》读书笔记三 Intent和IntentFilter详解
- Android笔记三:IntentFilter
- Android 之 Intent 和 IntentFilter
- android基础知识:intent和intentfilter
- android Intent和intentFilter详解
- Android 读书笔记---Intent 和 IntentFilter
- CMWAP模式
- 如何修改IE浏览器文本模式
- 程序、进程和线程的关系
- II77-7.5权限设置方法
- Android-数据库详解之一:SQLite关键字以及语法
- (三)Android Intent和IntentFilter整理笔记
- log4j详解与实战
- Emacs 放大缩小图片
- UIScrollView实现循环滚动
- 程序员 身边的趣事
- ajax省市区三级联动
- Java多线程总结(4)— 线程范围内数据操作的隔离及ThreadLocal类
- ueditor1_4_3-utf8-jsp 配置实现上传图片的功能遇到的问题,改变图片上传请求地址
- Android初识-权限大全