Ответ
BroadcastReceiver позволяет реагировать на системные или кастомные события. Пример: регистрация ресивера для события ACTION_AIRPLANE_MODE_CHANGED.
1. Объявление в манифесте:
<receiver android:name=".AirplaneModeReceiver">
<intent-filter>
<action android:name="android.intent.action.AIRPLANE_MODE"/>
</intent-filter>
</receiver>
2. Класс ресивера:
class AirplaneModeReceiver : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
val isEnabled = Settings.Global.getInt(
context.contentResolver,
Settings.Global.AIRPLANE_MODE_ON
) != 0
Toast.makeText(context, "Airplane mode: $isEnabled", Toast.LENGTH_SHORT).show()
}
}
Важно: Для Android 8+ динамическая регистрация предпочтительнее:
val filter = IntentFilter(Intent.ACTION_AIRPLANE_MODE_CHANGED)
registerReceiver(receiver, filter)
Не забудьте вызвать unregisterReceiver() в onDestroy().