Объяснение android13 RECEIVER_EXPORTED верно?

Выберите, должен ли широковещательный приемник экспортироваться и отображаться к другим приложениям на устройстве. Если этот ресивер прослушивает трансляции, отправленные из системы или из других приложений — даже из других приложений которыми вы владеете — используйте флаг RECEIVER_EXPORTED. Если вместо этого приемник прослушивает только трансляции, отправленные вашим приложением, используйте Флаг RECEIVER_NOT_EXPORTED.

это то, что google объясняет RECEIVER_EXPORTED, RECEIVER_NOT_EXPORTED

ссылка на объяснение

когда я хочу использовать трансляции, отправленные из системы Google говорит, что мне нужно использовать RECEIVER_EXPORTED

но когда я тестировал с "android.intent.action.AIRPLANE_MODE" и "RECEIVER_NOT_EXPORTED"

Я получил событие boradcast.

кто-нибудь может объяснить эту фразу?

0
0
104
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В их документе может быть ошибка или они передумали, потому что, согласно документации ContextCompat, вы можете использовать:

RECEIVER_NOT_EXPORTED, если вы хотите, чтобы ваш ресивер мог принимать трансляции только из системы или вашего собственного приложения.

На мой взгляд, так безопаснее, потому что мы не хотим, чтобы наш приемник был открыт для всех приложений только для того, чтобы получать системные трансляции.

(отредактировано) Я также нашел это в документации RECEIVER_NOT_EXPORTED:

Имеет то же поведение, что и пометка статически зарегистрированного получателя с помощью «exported = false».

И когда я смотрю на документацию приемника, для экспортируемого атрибута я читаю:

Если установлено значение «false», приемник вещания может получать только те сообщения, которые отправляются системой, компонентами того же приложения или приложениями с тем же идентификатором пользователя.

Поэтому я достаточно уверен, что реализация логична и в документации есть небольшая ошибка.

Другие вопросы по теме