Ответ
Да, Broadcast Receiver можно объявить динамически в коде. Для этого нужно создать экземпляр класса BroadcastReceiver и зарегистрировать его с помощью registerReceiver().
val receiver = object : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
// Обработка события
}
}
val filter = IntentFilter("com.example.ACTION_EVENT")
registerReceiver(receiver, filter)
Важно не забыть отменить регистрацию в onDestroy() или другом подходящем месте, иначе будет утечка памяти:
override fun onDestroy() {
super.onDestroy()
unregisterReceiver(receiver)
}
Динамическая регистрация удобна, когда приемник нужен только при жизни Activity/Service. Для системных событий (BOOT_COMPLETED и т.д.) требуется статическая регистрация в манифесте.