Ich habe einige Empfänger in meinem AndroidManifest deklariert:
<!-- 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>
Der erste soll eine BOOT_COMPLETED
Aktion erhalten. Der zweite soll empfangen android.net.wifi.SCAN_RESULTS
. Die dritte soll einige Aktionen empfangen, die ich gesendet habe (intent_action_monitor), und einige Aktionen, die vom AlarmManager
(intent_action_setup_alarm usw.) gesendet werden .
Zwei Fragen:
- Warum erhalte ich nicht die Warnung auf allen Empfängern?
- Welche Berechtigungen muss ich für Empfänger festlegen , die von Systemdiensten empfangen werden sollen, um die Warnung zu korrigieren (ich verstehe, worum es geht, und ich möchte sowieso nicht, dass jemand meine Empfänger verwendet)? Werden
exported="false"
Sie für die Boot - Empfänger, Wi - Fi - Empfänger, Alarmempfänger usw. ?
Ich habe überlegt, eine benutzerdefinierte Berechtigung mit zu verwenden,android:protectionLevel="signatureOrSystem"
aber die Dokumente raten sowohl von dieser Schutzstufe als auch von benutzerdefinierten Berechtigungen ab . Wie soll ich mit dieser Warnung umgehen?
Links zu den Dokumenten und / oder einem Code werden sehr geschätzt.
exported="false"
einen Unterschied? (Nebenbei: Ich benötige die Aktionen, aber Ihre Klarstellung "Verwenden Sie einen <intent-filter> nur, wenn Sie erwarten, dass das Betriebssystem oder Apps von Drittanbietern den Intent selbst initiieren (das Ausführen eines von Ihnen erstellten PendingIntent zählt nicht)." Ist sehr wichtig sehr willkommen - +1)