我在我的 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"
可以用于启动接收器、wifi 接收器、警报接收器等?
我曾想过使用自定义权限,android:protectionLevel="signatureOrSystem"
但文档建议不要使用此保护级别和自定义权限。那么我应该如何处理这个警告呢?
文档和/或一些代码的链接将不胜感激。