Что означает атрибут android:exported у компонентов в AndroidManifest.xml

«Что означает атрибут android:exported у компонентов в AndroidManifest.xml» — вопрос из категории Android компоненты, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Атрибут android:exported определяет, могут ли другие приложения взаимодействовать с компонентом (Activity, Service, Receiver, Provider).

  • true – компонент доступен извне (другие приложения могут его запускать/использовать).
  • false – компонент доступен только внутри приложения (за исключением некоторых случаев, например, явных Intent'ов).

Пример для BroadcastReceiver:

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

Важно: Начиная с Android 12 (API 31), для компонентов с <intent-filter> нужно явно указывать exported, иначе сборка упадёт.