Я не понимаю, если это необходимо для уведомления. Если это правда, любое приложение может вызвать мой приемник с этими действиями? Итак, если я сделаю это ложным , система может отправить свои действия моему ресиверу?
На самом деле, другие приложения не могут «позвонить получателю». Другие приложения могут просто отправлять широковещательную рассылку Intent
s. Затем система вызовет всех зарегистрированных получателей.
В общем, вы не должны беспокоиться об этом. Большинство из этих трансляций Intent
s защищены, так что только системные приложения могут транслировать их в любом случае. Например, попытка другого приложения для трансляции BOOT_COMPLETED
просто игнорируется. Что произойдет, если ваш BroadcastReceiver
будет запущен приложением-изгоем, потому что он транслирует CONNECTIVITY_CHANGE
? Наверное, ничего, потому что ваше приложение должно проверить реальное состояние подключения в onReceive()
в любом случае, и если нет никаких изменений, вы можете просто проигнорировать его.
Кроме того, вам не нужно указывать android:enabled="true"
, потому что это состояние по умолчанию. Вам также не нужно указывать android:exported="true"
, потому что у вас есть <intent-filter>
, прикрепленный к <receiver>
, который автоматически устанавливает android:exported
в true
.
Просто прочтите [официальную документацию] (https://developer.android.com/guide/topics/manifest/receiver-element.html) – dipdipdip
, например: «Будет ли широковещательный приемник получать сообщения из источников за пределами его применение ".... что это означает наружу? Связано ли это с системой? – user3290180