Как запустить BroadcastReceiver

«Как запустить BroadcastReceiver» — вопрос из категории Android компоненты, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Для запуска BroadcastReceiver нужно зарегистрировать его в манифесте или динамически в коде.

1. Статическая регистрация (в AndroidManifest.xml):

<receiver android:name=".MyReceiver">
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED" />
    </intent-filter>
</receiver>

2. Динамическая регистрация (в Activity/Fragment):

val receiver = MyReceiver()
val filter = IntentFilter().apply {
    addAction(Intent.ACTION_AIRPLANE_MODE_CHANGED)
}

// Регистрация
registerReceiver(receiver, filter)

// Не забыть отменить регистрацию в onDestroy()
unregisterReceiver(receiver)

Пример BroadcastReceiver:

class MyReceiver : BroadcastReceiver() {
    override fun onReceive(context: Context, intent: Intent) {
        when (intent.action) {
            Intent.ACTION_BOOT_COMPLETED -> Log.d("MyReceiver", "Device booted!")
        }
    }
}