Android Intent — это объект обмена сообщениями, используемый для запроса другого компонента приложения на выполнение действия. Intent облегчает пользователям взаимодействие с компонентом приложения несколькими способами, такими как запуск действия, запуск службы, доставка широковещательного приемника и т. д.
Интенты Android в основном используются, чтобы:
- Запустить службу
- Запустить активность
- Показать веб-страницу
- Показать список контактов
- Сделать рассылку сообщений
- Набрать номер телефона и т.д.
Типы интентов Android
В Kotlin Android есть два типа намерений — Explicit Intent и Implicit Intent:
Explicit Intent: это намерение удовлетворяет запрос в компоненте приложения. Он принимает полное имя класса действий или служб, которые мы хотим запустить.
intent = Intent(applicationContext, SecondActivity::class.java) startActivity(intent)
Implicit Intent: это намерение не указывает имя компонента. Он вызывает компонент другого приложения для его обработки.
intent = Intent(Intent.ACTION_VIEW)
intent.setData(Uri.parse("https://www.javatpoint.com/"))
startActivity(intent)
intent= Intent(Intent.ACTION_VIEW, Uri.parse("https://www.javatpoint.com/"))
startActivity(intent)
Пример Explicit Intent Kotlin Android
В этом примере мы вызовем класс активности из другого класса активности, используя явное намерение. Используя Intent, мы отправим данные из первого класса во второй класс активности. Второй класс активности получает эти данные и отображает их во всплывающем сообщении.

Activity_main.xml
Добавьте следующий код в файл activity_main.xml.
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="example.javatpoint.com.kotlinexplicitintent.MainActivity">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_marginTop="8dp"
android:text="First Activity"
android:textSize="18sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintHorizontal_bias="0.501"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.172" />
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:text="Click"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView"
app:layout_constraintVertical_bias="0.77" />
</android.support.constraint.ConstraintLayout>
MainActivity.kt
Добавьте следующий код в класс MainActivity.kt. В этом классе мы создаем экземпляр класса Intent и вызываем класс активности компонента SecondActivity.kt. Метод putExtra(key, value) класса Intent отправляет данные в класс SecondActivity.kt. Метод startActivity() запускает Intent.
package example.javatpoint.com.kotlinexplicitintent
import android.content.Intent
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
val id:Int = 10
val language:String = "kotlin"
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
button.setOnClickListener() {
intent = Intent(this, SecondActivity::class.java)
intent.putExtra("id_value", id)
intent.putExtra("language_value", language)
startActivity(intent)
}
}
}
Создайте еще один класс действий с именем SecondActivity.
second_activity.xml
В файл second_activity.xml добавьте следующий код.
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="example.javatpoint.com.kotlinexplicitintent.SecondActivity">
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:text="SecondActivity"
android:textSize="18sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.107" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:text="back"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.774" />
</android.support.constraint.ConstraintLayout>
SecondActivity.kt
Добавьте следующий код в класс SecondActivity.kt. В этом классе мы получаем данные о намерениях, создавая экземпляр класса Bundle с помощью намерения.extras и отображая данные во всплывающем сообщении. Нажав на кнопку, мы вызываем Intent для вызова класса MainActivity.kt.
package example.javatpoint.com.kotlinexplicitintent
import android.content.Intent
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.widget.Toast
import kotlinx.android.synthetic.main.activity_second.*
class SecondActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_second)
val bundle:Bundle = intent.extras
val id = bundle.get("id_value")
val language = bundle.get("language_value")
Toast.makeText(applicationContext,id.toString()+" "+language,Toast.LENGTH_LONG).show()
button2.setOnClickListener(){
intent = Intent(this,MainActivity::class.java)
startActivity(intent)
}
}
}
Выход:


Неявное намерение
Implicit Intent (Неявное намерение) Android в Котлин вызывает компонент другого приложения для обработки запроса. Оно не указывает конкретное имя компонента.
Например, если мы хотим поделиться данными с помощью Intent, он вызывает соответствующий компонент для выполнения запроса.

intent = Intent(Intent.ACTION_VIEW)
intent.setData(Uri.parse("https://www.javatpoint.com/"))
startActivity(intent)
intent= Intent(Intent.ACTION_VIEW, Uri.parse("https://www.javatpoint.com/"))
startActivity(intent)
Пример неявного намерения Kotlin Android, вызывающего URL-адрес
В этом примере мы будем вызывать URL-адрес в Котлин, используя неявное намерение, нажав кнопку.
Activity_main.xml
Добавьте следующий код в файл activity_main.xml. В этом действии мы используем кнопку для вызова Intent.
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="example.javatpoint.com.kotlinimplicitintent.MainActivity">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_marginTop="8dp"
android:text="Your First Activity"
android:textSize="18sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintHorizontal_bias="0.501"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.172" />
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:text="click to invoke intent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView"
app:layout_constraintVertical_bias="0.77" />
</android.support.constraint.ConstraintLayout>
MainActivity.kt
Добавьте следующий код в класс MainActivity.kt. В этом классе мы вызываем URL-адрес при нажатии кнопки с использованием неявного намерения. Чтобы вызвать это намерение, мы передаем тип действия и URL-адрес. Метод startActivity() используется для запуска Intent.
package example.javatpoint.com.kotlinimplicitintent
import android.content.Intent
import android.net.Uri
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
button.setOnClickListener(){
intent = Intent(Intent.ACTION_VIEW)
intent.setData(Uri.parse("https://www.javatpoint.com/"))
startActivity(intent)
/* intent= Intent(Intent.ACTION_VIEW, Uri.parse("https://www.javatpoint.com/"))
startActivity(intent)*/
}
}
}
Вывод:



