Ответ
Intent можно ловить несколькими способами:
- Явный Intent - указываем конкретный компонент (Activity/Service/BroadcastReceiver):
val intent = Intent(this, TargetActivity::class.java)
startActivity(intent)
- Неявный Intent - система ищет подходящий компонент по action, категориям и data:
val intent = Intent(Intent.ACTION_VIEW).apply {
data = Uri.parse("https://google.com")
}
startActivity(intent)
- Broadcast Receiver - для системных/кастомных событий:
val filter = IntentFilter().apply {
addAction(Intent.ACTION_AIRPLANE_MODE_CHANGED)
}
registerReceiver(receiver, filter)
Для Activity нужно объявить IntentFilter в манифесте:
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="http" />
</intent-filter>
Важно: с Android 8+ ограничена работа неявных Broadcast Intent'ов. Для фоновых задач лучше использовать WorkManager или JobScheduler.