Ответ
Регистрация BroadcastReceiver в манифесте не работает в таких случаях:
- Для неэкспортируемых broadcast'ов (начиная с Android 8.0) - система не доставит их
- Для динамических broadcast'ов (например, LOCAL_BROADCAST) - они работают только в контексте приложения
- Когда требуется runtime-проверка разрешений (RECEIVER_EXPORTED/RECEIVER_NOT_EXPORTED)
Пример правильной динамической регистрации:
val filter = IntentFilter("MY_ACTION")
registerReceiver(myReceiver, filter, RECEIVER_NOT_EXPORTED)
Важно: начиная с Android 14, все ресиверы должны явно указывать экспортируемость.