android:exported=false в широковещательном приемнике с объявленным фильтром намерений

Я хочу объявить широковещательный приемник, который может прослушивать системные трансляции, такие как 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") вместе с фильтрами намерений, сделает ли он его более безопасным и сделает его доступным только для системы, а не для других приложений?


person user3400887    schedule 10.10.2018    source источник
comment
прочитайте developer.android.com/guide/topics/manifest/   -  person IntelliJ Amiya    schedule 10.10.2018
comment
Я прочитал документацию, прежде чем публиковать вопрос здесь. Там нет упоминания о комбинации, которую я спросил здесь. Мой вопрос касается конкретного поведения, когда у меня есть фильтр намерений, а также экспортируется значение false.   -  person user3400887    schedule 10.10.2018


Ответы (1)


Попробовал комбинацию (exported="false" вместе с фильтром намерений, объявленным в приемнике), задал вопрос в примере приложения и обнаружил, что приемник все еще может прослушивать системные события, такие как PACKAGE_ADDED, PACKAGE_REMOVED и т. д.

person user3400887    schedule 11.10.2018