Android: "El receptor exportado no requiere permiso" en los receptores destinados a recibir de los servicios del sistema
Tengo algunos receptores declarados en mi 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>
El primero está destinado a recibir unaBOOT_COMPLETED
acción. El segundo es para recibirandroid.net.wifi.SCAN_RESULTS
. El tercero está destinado a recibir algunas acciones que transmito (intent_action_monitor) y algunas acciones emitidas por elAlarmManager
(intent_action_setup_alarm etc).
Dos preguntas:
¿Por qué no recibo la advertencia en todos los receptores?¿Qué permisos necesito establecer?para los receptores destinados a recibir de los servicios del sistema para corregir la advertencia (¿Entiendo de qué se trata y no quiero que nadie use mis receptores de todos modos)?Seráexported="false"
hacer para receptores de arranque, receptores wifi, receptores de alarma, etc.?Pensé en usar un permiso personalizado con
android:protectionLevel="signatureOrSystem"
Pero los documentos desaconsejan tanto esto.nivel de protección ypermisos personalizados. Entonces, ¿cómo debo manejar esta advertencia?Los enlaces a los documentos y / o algún código serán muy apreciados.