Метод getActivity
Метод getActivity класса
PendingIntent
оборачивает
Intent
для запуска экрана позже.
Параметр requestCode
различает несколько pending у одного приложения.
В flags на API 31+ обычно добавляют
FLAG_IMMUTABLE или FLAG_MUTABLE.
Готовый объект передают в Notification
или виджет, а не вызывают startActivity сразу.
Синтаксис
val pending = PendingIntent.getActivity(context, 0, intent, flags)
Параметры
| Параметр | Описание |
|---|---|
context |
Context приложения, часто activity или application. |
requestCode |
Целое число, идентифицирующее этот PendingIntent. |
intent |
Intent целевой activity с extras при необходимости. |
flags |
Битовая маска PendingIntent, включая IMMUTABLE или MUTABLE. |
Пример
Давайте создадим PendingIntent с extra note:
import android.app.PendingIntent
import android.content.Intent
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.material3.Text
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val intent = Intent(this, SecondActivity::class.java).apply {
putExtra("note", "12345")
}
val flags = PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE
PendingIntent.getActivity(this, 0, intent, flags)
setContent {
Text(text = "abcde")
}
}
}
На экране текст "abcde", а PendingIntent
готов открыть SecondActivity с note позже.
Пример
Давайте сравним requestCode для двух pending:
import android.app.PendingIntent
import android.content.Intent
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.material3.Text
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val flags = PendingIntent.FLAG_IMMUTABLE
val first = Intent(this, SecondActivity::class.java)
val second = Intent(this, ThirdActivity::class.java)
PendingIntent.getActivity(this, 1, first, flags)
PendingIntent.getActivity(this, 2, second, flags)
setContent {
Text(text = "12345")
}
}
}
На экране "12345", а два PendingIntent
различаются requestCode 1 и 2.
Смотрите также
-
метод
getBroadcast,
PendingIntent для receiver -
метод
startActivity,
немедленный запуск того же intent -
метод
putExtra,
данные в intent для pending -
класс
PendingIntent,
где объявлен getActivity