Я хочу объявить широковещательный приемник, который может прослушивать системные трансляции, такие как PACKAGE_ADDED
, PACKAGE_REPLACED
, например.
<receiver
android:name="com.sample.cli.xyz.XyzReceiver"
android:exported="true"
android:enabled="false">
<intent-filter>
<action android:name="android.intent.action.PACKAGE_ADDED"/>
<action android:name="android.intent.action.PACKAGE_REPLACED"/>
<action android:name="android.intent.action.PACKAGE_REMOVED"/>
</intent-filter>
</receiver>
Если я оставлю здесь exported="true"
, любое приложение сможет отправить трансляцию, и это может быть проблемой безопасности. Согласно документации Android, если у нас есть хотя бы 1 фильтр намерений в теге получателя, значение по умолчанию для экспорта считается «истинным».
Мой вопрос: если я явно объявлю этот атрибут как «ложный» (android:exported="false"
) вместе с фильтрами намерений, сделает ли он его более безопасным и сделает его доступным только для системы, а не для других приложений?