OK我们来讲一下隐式Intent~~~~
在隐式Intent部分,将给出3个主要例子,来帮助对其的理解,主要目录如下。
什么是隐式Intent
在显式Intent中,我们想要启动哪个活动被明确指出,而隐式Intent指定了一系列更为抽象的action和category等信息,交由系统去分析这个Intent并启动相应的活动。
那么什么叫做相应的活动?其实就是与我们给出的这些信息相匹配的活动~请看例子1,如下:
利用隐式Intent来实现活动跳转
首先来配置我们的action和category等信息,这一步在AndroidManifest.xml中完成,在<activity>
标签下配置<intent-filter>
,添加如下代码:
<activity android:name=".SecondActivity">
<intent-filter>
<action android:name="com.example.activitytest.ACTION_START" />
//指明当前活动可以响应的action
<category android:name="android.intent.category.DEFAULT" />
//附加信息,更精确地指明当前活动能够响应的Intent中还可能带有的category
</intent-filter>
</activity>
这就是我们设置的action和category的信息,也就是说,只有Intent中的内容与我们所给定的这些内容完全匹配的时候,该Intent才能被活动响应。
好的,现在我们来让我们Intent匹配这些信息,来使Intent能够被启动。
修改FirtstActivity中按钮的点击事件:
button1.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
//这个是隐式intent
Intent intent=new Intent("com.example.activitytest.ACTION_START");
startActivity(intent);
}
});
}
值得提出的是,在这里我们没有指定category
,是因为android.intent.category.DEFAULT
是一种默认的category,在调用startActivity()
方法的时候会自动将这个category
添加到Intent中。而如果需要配置别的category
类型,则在<intent-filter>
和FirtstActivity中按钮的点击事件作相应添加就可以啦。
运行程序,在FirstActivity的界面点击Button 1,发现你已经可以启动SecondActivity啦~~~而且这次是通过隐式Intent启动的~
利用隐式Intent打开浏览器
使用隐式Intent还可以启动(你自己app之外的)其他活动,这让Android多个应用程序之间的功能共享成为了可能。下面这个例子是来调用系统的浏览器的,同样通过在FirstActivity中点击按钮跳转到浏览器页面。
button1.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
//打开浏览器界面
Intent intent = new Intent(Intent.ACTION_VIEW);
//指定intent的action是 Intent.ACTION_VIEW
intent.setData(Uri.parse("http://www.baidu.com"));
//Uri.parse()可以将一个网址字符串解析成Uri对象,
//再调用intent的setData()方法将这个Uri对象传递进去。
startActivity(intent);
}
});
}
代码解释:
setData()
接收一个Uri
对象,主要用于指定当前Intent正在操作的数据,而这些数据通常以字符串的形式传入到Uri.parse()
中。
重新启动程序,在FirstActivity中点击Button 1
,就可以看到浏览器的打开~
利用隐式Intent实现拨号功能
将FirstActivity中public void onClick(View v)
里的代码块作如下修改:
//调用系统拨号界面
Intent intent=new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:10086"));
startActivity(intent);
重新启动程序,可以看到程序调用了拨号界面,并显示了10086~
关于Intent在活动中跳转的功能介绍大概就是这些了~除此之外,Intent还可以在活动之间传递数据,比如向下一个活动传递数据,或者返回数据给上一个活动。