Loading... ## Intent Intent(意图)是android程序中各组件之间进行交互的一种重要方式,它不仅可以指明当前组件想要执行的动作,还可以在不同组件之间传递数据。Intent一般可用于启动Activity、启动Service以及发送广播等场景。 它主要分为种:显式Intent和隐式Intent [Intent构造函数文档][1] ---------- ## 显式Intent #### 1. 启动Activity ```kotlin button1.setOnClickListener{ val intent = Intent(this, SecondActivity::class.java) startActivity(intent) ``` 我们首先构建了一个Intent对象,第一个参数this也就是按钮自身所在的Activity作为上下文,第二个参数传入SecondActivity::Class.java作为目标Activity。接下来再通过startActivity()方法执行这个Intent即可启动新的Activity。 注意:kotlin的SecondActivity::Class.java写法就相当于java中的SecondActivity.class写法。 这种方式启动Activity,Intent的意图非常明显,称之为显式Intent。 ---------- ## 隐式Intent 相比于显式Intent,隐式Intent并没有明确指定想要启动哪个Activity,而是指定了一系列更为抽象的action和category等信息。然后交由系统去分析这个Intent,并帮我们找到合适的Activity去启动。 #### 1. 启动Activity ```kotlin button1.setOnClickListener{ val intent = Intent(Intent.ACTION_SEND) startActivity(intent) ``` 隐式Intent的构造函数有许多。以上是其中之一。 ---------- ## Intent的一些使用方法 #### 1. 传递参数 利用putExtra()方法。该方法有很多重载,下面的例子是其中之一。 ```kotlin val shareIntent = Intent(Intent.ACTION_SEND) // 此重载第一个参数是键, 第二个参数是值(可以是多种类型) shareIntent.putExtra("data", "some data") ``` #### 2. 检查是否存在想要意图的Activity 示例 ```kotlin // Build the intent val location = Uri.parse("geo:0,0?q=1600+Amphitheatre+Parkway,+Mountain+View,+California") val mapIntent = Intent(Intent.ACTION_VIEW, location) // Verify it resolves val activities: List<ResolveInfo> = packageManager.queryIntentActivities(mapIntent, 0) val isIntentSafe: Boolean = activities.isNotEmpty() // Start an activity if it's safe if (isIntentSafe) { startActivity(mapIntent) } ``` [1]: https://developer.android.com/reference/android/content/Intent.html#Intent() 最后修改:2020 年 05 月 31 日 03 : 32 PM © 允许规范转载