<receiver
android:name="MyReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
我不明白是否需要通知。 如果确实有任何应用程序可以通过这些操作调用我的接收器?那么如果我把它弄错了,系统可以将动作发送给我的接收器吗?
答案 0 :(得分:16)
我不明白是否需要通知。如果确实如此 应用可以通过这些操作呼叫我的接收器?所以,如果我做错了 系统可以将动作发送给我的接收器吗?
实际上,其他应用无法“呼叫您的接收器”。其他应用只能发送广播Intent
。然后,系统将呼叫所有已注册的接收器。
一般来说,你不应该担心这一点。这些广播Intent
中的大多数都受到保护,因此只有系统应用才能广播它们。例如,另一个应用程序尝试广播BOOT_COMPLETED
只会被忽略。如果您的BroadcastReceiver
被流氓应用触发,因为它广播CONNECTIVITY_CHANGE
,会发生什么?可能没什么,因为你的应用程序应该检查onReceive()
中的真实连接状态,如果没有任何变化,你可以忽略它。
此外,您无需指定android:enabled="true"
,因为这是默认状态。您也不需要指定android:exported="true"
,因为<intent-filter>
附加了<receiver>
,会自动将android:exported
设置为true
。
答案 1 :(得分:3)
如果设置perl -pe 's/(?<=Tree)(\d+)/$1 - 1/ge'
,则表示接收器仅用于应用程序内部。
注意:此属性不是限制广播接收机外部曝光的唯一方法。您还可以使用权限进行限制 可以向其发送消息的外部实体