android - “O receptor exportado não requer permissão” nos receptores destinados a receber dos serviços do sistema
Eu tenho alguns receptores declarados no meu 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>
O primeiro é destinado a receber umBOOT_COMPLETED
açao. O segundo destina-se a receberandroid.net.wifi.SCAN_RESULTS
. O terceiro destina-se a receber algumas ações que eu transmito (intent_action_monitor) e algumas ações transmitidas peloAlarmManager
(intent_action_setup_alarm etc).
Duas questões:
Por que eu não recebo o aviso em todos os receptores?Quais permissões eu preciso definirpara receptores destinados a receber de serviços do sistema para corrigir o aviso (Eu entendo do que se trata e não quero que ninguém use meus receptores de qualquer maneira)?Vaiexported="false"
Faz para receptores de inicialização, receptores wifi, receptores de alarme, etc.?Eu pensei em usar uma permissão personalizada com
android:protectionLevel="signatureOrSystem"
mas os docs aconselham contra issoNível de proteção epermissões personalizadas. Então, como eu devo lidar com esse aviso?Links para os documentos e / ou algum código serão muito apreciados.