android - «Экспортированный получатель не требует разрешения» на получателях, предназначенных для получения от системных служб
У меня есть несколько получателей, объявленных в моем AndroidManifest:
<!-- no warning -->
<receiver
android:name=".receivers.TriggerMonitoringBootReceiver"
android:enabled="false">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
<!-- no warning -->
<receiver
android:name=".receivers.ScanResultsReceiver"
android:enabled="false">
<intent-filter>
<action android:name="android.net.wifi.SCAN_RESULTS" />
</intent-filter>
</receiver>
<!-- warning : Exported receiver does not require permission-->
<receiver
android:name=".receivers.BatteryMonitoringReceiver"
android:enabled="false">
<intent-filter>
<action android:name="@string/intent_action_setup_alarm" />
<action android:name="@string/intent_action_cancel_alarm" />
<action android:name="@string/intent_action_monitor" />
</intent-filter>
</receiver>
Первый предназначен для полученияBOOT_COMPLETED
действие. Второй предназначен для полученияandroid.net.wifi.SCAN_RESULTS
, Третий предназначен для получения некоторых действий, которые я передаю (intent_action_monitor), и некоторых действий, передаваемыхAlarmManager
(intent_action_setup_alarm и т. д.).
Два вопроса:
Почему я не получаю предупреждение на всех приемниках?Какие разрешения мне нужно установитьдля получателей, предназначенных для получения от системных служб исправления предупреждения (Я понимаю, о чем это, и я не хочу, чтобы кто-нибудь использовал мои приемники в любом случае)?Будетexported="false"
делать для загрузочных приемников, приемников Wi-Fi, приемников тревоги и т. д.?Я думал об использовании пользовательских разрешений с
android:protectionLevel="signatureOrSystem"
но документы советуют против этогоуровень защиты а такжепользовательские разрешения, Так как же мне справиться с этим предупреждением?Ссылки на документы и / или некоторый код будут высоко оценены.