概述
Intent(意图,目的),用于在活动(activity)之间穿梭,分为显式Intent和隐式Intent
显式Intent
| 1 | public void onClick(View v) { | 
隐式Intent
隐式Intent并未明确指出启动哪一个活动,而是通过action和category等信息,让系统分析出让哪个Intent启动
比如采用隐式的方式从activity1启动activity2
| 1 | //修改AndroidManifest.xml配置文件,在SecondActivity中添加<intent-filter>的两行内容: | 
- 在 - <action/>标签指明了当前活动可以响应的- action:"com.example.day01_empty.ACTION_START"
- 而 - <category/>包含了附加信息,指明当前活动能响应的Intent可能带有category
- 只有 - <action/>和- <category>中的内容同时匹配Intent中指定的action和category时,该活动才能响应该Intent。x
在activity1中进行跳转
| 1 | public void onClick(View v) { | 
action和category
每个Intent只能指定一个action,但却能指定多个category,使用addCategory()方法添加
| 1 | public void onClick(View v) { | 
隐式Intent的更多用法
用系统浏览器打开URL
指定action是Intent.ACTION_VIEW,这是Android的一个内置动作。对应配置文件的常量值是android.intent.action.VIEW,然后通过Intent.setData()方法将Uri.parse()解析的Uri对象传递进去
| 1 | public void onClick(View v) { | 
系统拨号
指定Intent的action是Intent.Action_DIAL,也是内置动作指定协议是tel,号码是10086,经过Uri.parse()解析后传入setData()
| 1 | public void onClick(View v) { | 
进阶用法
可以在<intetent-filter>标签中再添加一个<data>标签,用来精确指定当前活动能响应的数据类型。配置下列内容:
- android:scheme:指定数据协议
- android:host:指定主机名
- android:port:指定端口号
- android:path:指定之后的内容
- android:mimeType:指定处理的数据类型,允许通配符
例如修改activity2的注册信息,使得activity2可以响应系统拨号
| 1 | <activity android:name=".activity.SecondActivity"> | 
这样的话,再次运行上面的拨号那个例子,系统拨号和页面2都会做出响应,供我们来选择,如下图
