1. 关于Intent
Intent不仅可用于应用程序之间,也可用于应用程序内部的Activity/Service之间的交互。因此,可以将Intent理解为不同组件之间通信的“媒介”专门提供组件互相调用的相关信息。
2. Intent的作用
1.启动Activity
2.启动Service
3.发送广播
3. 如何使用Intent
Intent的使用分为两种,显示使用和隐式使用,有两个重载函数
1.Intent(Context packageContext, Class<?>)
第一个参数是启动Activity的上下文,第二个参数是目标Activity
2.Intent(Action)
另外,Activity类中提供了StartActivity()函数,专门用于启动Activity
4. 开始使用
4.1 显式使用
在activity_main.xml中,定义了一个Button
我们另外定义一个activity2,我们希望点击activity_main的按钮可以跳转到activity2
开始实现(这里我使用的是Kotlin):
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
//Button_one
Button_one.setOnClickListener() { // Kotlin中可以直接使用定义部件的id
val intent=Intent(this, MainActivity2::class.java) //跳转到Activity2
startActivity(intent) // 启动任务
}
}
这样就大功告成了
实验一下
点击Like(Button)后,跳转到Activity2中
4.2 隐式使用
隐式使用并不直接指明启动哪一个Activity,而是指定更为抽象的action和category等信息,交给系统分析启动哪个Activity,隐式启动不仅可以启动自己程序内的Activity而且还可以启动其他程序的Activity
4.2.1 指定action和category
在action标签中,指明了Activity可以响应myapplication.ACTION_DIAL这个action
在category标签则包含一些附加信息
(action_DIAL是打电话,类似的还有action_VIEW等等)
注意:每个Intent中只能指定一个action,但可以包含多个category
接下来,我们准备调用系统自带的拨号软件
添加Kotlin代码:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
Button_one.setOnClickListener {
val intent=Intent(Intent.ACTION_DIAL) //Intent(action)
intent.data= Uri.parse("tel:10086")
startActivity(intent)
}
}
实验一下:
成功调用