Intent之间的切换可以使用显示Intent和隐式Intent。
1、使用显示Intent
使用Intent创建Intent
的实例。构造函数的参数有两个,见下例:
bt1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intend=new Intent(MainActivity.this,Main2Activity.class);
startActivity(intend);
}
});
参数1为当前启动活动的上下文,第二个参数为要启动的目标活动。创建好后,直接使用startActivity便可以启动。
2、隐式Intent
隐式Intent不会直接指定要启动的活动,而是在创建Intent时,指定action和category。然后startActivity就可以了。相应的活动根据配置文件中本activity中的intent_filter来确定启动哪一个活动。
在第一个活动中常见Intent实例并启动。
Button bt2=(Button)findViewById(R.id.button2);
bt2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intend=new Intent("com.example.david.activity3");
//构造函数直接action。
intend.addCategory("com.example.david.activity_test");
//使用addCategory将category添加到Intent中。
startActivity(intend);
}
});
//每个Intent只能指定一个action,却可以指定多个category。
待启动活动的intent_filter如下:
<intent-filter>
<action android:name="com.example.david.activity3" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="com.example.david.activity_test" />
/>
android.intent.category.DEFAULT是默认的category,在调用startActivity会自动将这个category加入到Intent中。
隐式Intent还可以启动其他程序的活动,是的android可以在多个应用程序之间进行切换。例如可以方便调用android系统中的一些内置动作。
(1)指定Intent中的action为Intent.ACTION_VIEW(常量值为android.intent.action.VIEW),再使用Intent的setData方法添加相应的Uri,便可以使用浏览器启动相应的页面。
bt3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intend=new Intent("android.intent.action.VIEW");
intend.setData(Uri.parse("http://www.baidu.com"));
startActivity(intend);
}
});
(2)指定Intent中的action为Intent.ACTION_DIAL,再使用Intent的setData方法添加相应的Uri,便可以使用进入拨号的界面,并将相应的号码传入。
bt4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intend=new Intent(Intent.ACTION_DIAL);
intend.setData(Uri.parse("tel:1566666666"));
startActivity(intend);
}
});
对应于Intent中的setData,可以在待相应的活动中设置设置相应的数据类型。
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<data android:scheme="http" />
</intent-filter>
这里便可以响应http协议类型的数据。
其他的data标签如下:
androi:scheme 数据协议 (例:http)
android:host 数据的主机名部分(例:www.baidu,com)
android:port 数据的端口部分
android:path 端口之后的部分
android:mimeType 数据类型
只有标签中指定的的内容和Intent中携带的Data完全一致,当前活动才可以响应该Intent。
一般不用设置过多的内容,例如在本例中仅仅设置了android:scheme属性。