Intent和intentFilter:
android用intent机制来协助应用间的交互与通讯。intent负责对应用中一次操作的动作、动作
涉及的数据、附加数据进行描述。起到一个交互中介的作用,
intent的使用方式
1、通过context.startActivity()和Activity.startActivityForResule()启动activity
2、通过context.startService启动服务,或context.bindService与后台服务交互
3、通过广播context.sendBroadcast发送给broadcast receivers
intent的属性设置
1、Action:使用在响应组件(activity等)中android:name来制定对响应的动作名,
动作名必须是唯一的,intent可以设置action属性来制定动作
intent.setAction("在这里添加上面制定的动作名");
2、Data:执行动作要操作的数据,android中采用指向数据的URI来表示。
3、type 数据类型,显示制定数据的数据类型。
4、category:类别: 被执行动作的附加信息。
5、component组件: android会根据intent包含的action等信息查找,但如果有component
就会按照comonent,其他的都会忽略。
6\extras 附加信息,是其他所有附加信息的集合,如发送邮件,将标题,正文添加到里面,发送给邮件组,
intent的两种用法:
1、显示启动
Intent it = new Intent(activity,activity);
startActivity(it);
指明了接收者,
2、隐式启动
Intent it = new Intent();
it.setAction("tiansong");
startActivity(it);
对于显示intent,android不用去解析,因为目标组件已经明确,隐式intent需要
通过解析,将intent映射给可以处理此intent的activity\service等
intent 解析机制主要是通过查找AndroidManifest中所有的intentFilter中定义的Intent,
最终找到匹配的Intent,解析是通过action,type,category三个属性来进行判断的,
intent里面放数据:
intent it= new Intent();
Bundle b = new Bundle();
b.putString(“name”,” this.s”);
it.putExtras(b);
获取: Bundle b = it.getExtras();
String s = b.getString("name");
IntentFilter定义:
IntentFilter就是用于描述intent的各种属性,eg:action category
IntentFilter的几个注意事项:
1、android.intent.action.MAIN决定一个应用程序最先启动组件。
android.intent.category.LAUNCHER决定应用程序是否显示在程序列表里(在桌面
显示一个图标)
隐式intent:
每一个通过startActivity方法发出的隐式intent都至少有一个category,就是”android.
intent.categroy.DEFAULT"所以只要想接收一个隐式intent的Activity
intent-Filter 的优先级:在intent的过滤顺序:action->data->category
android.intent.category.LAUNCHER决定程序在桌面有图标与
android.intent.category.HOME 决定应用程序在HOME键下能显示在HOME列表中,