У меня есть несколько приемников, объявленных в моем 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"
, но в документации не рекомендуется использовать оба этих уровня защиты и настраиваемые разрешения. Итак, как я должен обрабатывать это предупреждение?
Ссылки на документы и/или некоторый код будут высоко оценены.