android: exported = "false" в широковещательном приемнике с объявленным фильтром намерений - PullRequest
0 голосов
/ 10 октября 2018

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

1 Ответ

0 голосов
/ 11 октября 2018

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

...