Android: OnBootReceiver: экспортированный приемник не требует разрешения
Я создал BroadcastReceiver
, который получает BOOT_COMPLETED
.
В моем AndroidManifest.xml
я добавил его так:
<receiver
android:name=".OnBootReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.QUICKBOOT_POWERON" />
</intent-filter>
</receiver>
Однако я получаю предупреждение: Экспортированный получатель не требует разрешения.
Я читал об этом на SO, но я не совсем понимаю.
Так может кто-нибудь объяснить этому начинающему:), почему я получаю это предупреждение и что делать против него (и почему)?
Ответы
Ответ 1
Предупреждение "Экспортированный приемник не требует разрешения" означает,
У вас есть фильтр намерений с некоторым действием (что означает, что по умолчанию у вас установлен android: exported = "true", и теперь он может получать трансляции от ЛЮБОГО вещателей вне вашего приложения)
Поскольку он может получать широковещательные передачи от ЛЮБОГО вещателей вне вашего приложения, он предупреждает вас, говоря: "Эй, вы уверены, что телеканал ЛЮБОЙ может вызывать вас? На мой взгляд, это лучше, если вы разрешаете только тем вещателям вызывать вас, у которого есть разрешение, которое вы установили для этого ресивера, через андроид: разрешение"
Надеюсь, что это ясно!
Ответ 2
Вы можете удалить это предупреждение, добавив android:exported="false"
в тег приемника (см. этот ответ: fooobar.com/info/50905/...)