Android: exported receiver的属性是什么意思?
Android: what's the meaning of exported receiver's attribute?
<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>
不知道是否需要通知。
如果这是真的,任何应用程序都可以通过这些操作调用我的接收器?因此,如果我将其设置为 false,系统可以将操作发送到我的接收器吗?
如果您设置 android:exported ="false"
,则意味着接收器仅供 应用程序内部 使用。
Note: This attribute is not the only way to limit a broadcast receiver's external exposure. You can also use a permission to limit
the external entities that can send it messages
I don't understand if it's needed to be notified. If it were true any
app could call my receiver with those actions? So If I make it false
the system can send the actions to my receiver?
实际上,其他应用不能"call your receiver"。其他应用程序可以只发送广播 Intent
s。然后系统将呼叫所有注册的接收者。
一般来说,您不必为此担心。大多数这些广播 Intent
都受到保护,因此只有系统应用程序才能广播它们。例如,另一个应用程序尝试广播 BOOT_COMPLETED
,将被忽略。如果您的 BroadcastReceiver
被流氓应用程序触发,因为它广播 CONNECTIVITY_CHANGE
,会发生什么情况?可能没什么,因为您的应用无论如何都应该检查 onReceive()
中的真实连接状态,如果没有任何变化,您可以忽略它。
此外,您无需指定 android:enabled="true"
,因为这是默认状态。您也不需要指定 android:exported="true"
,因为您的 <receiver>
附加了一个 <intent-filter>
,它会自动将 android:exported
设置为 true
。
添加到@SaravInfern 的回答中。这是限制可以发送接收者消息的外部实体的相关权限文档:
https://developer.android.com/training/permissions/restrict-interactions#broadcast-receivers
<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>
不知道是否需要通知。 如果这是真的,任何应用程序都可以通过这些操作调用我的接收器?因此,如果我将其设置为 false,系统可以将操作发送到我的接收器吗?
如果您设置 android:exported ="false"
,则意味着接收器仅供 应用程序内部 使用。
Note: This attribute is not the only way to limit a broadcast receiver's external exposure. You can also use a permission to limit the external entities that can send it messages
I don't understand if it's needed to be notified. If it were true any app could call my receiver with those actions? So If I make it false the system can send the actions to my receiver?
实际上,其他应用不能"call your receiver"。其他应用程序可以只发送广播 Intent
s。然后系统将呼叫所有注册的接收者。
一般来说,您不必为此担心。大多数这些广播 Intent
都受到保护,因此只有系统应用程序才能广播它们。例如,另一个应用程序尝试广播 BOOT_COMPLETED
,将被忽略。如果您的 BroadcastReceiver
被流氓应用程序触发,因为它广播 CONNECTIVITY_CHANGE
,会发生什么情况?可能没什么,因为您的应用无论如何都应该检查 onReceive()
中的真实连接状态,如果没有任何变化,您可以忽略它。
此外,您无需指定 android:enabled="true"
,因为这是默认状态。您也不需要指定 android:exported="true"
,因为您的 <receiver>
附加了一个 <intent-filter>
,它会自动将 android:exported
设置为 true
。
添加到@SaravInfern 的回答中。这是限制可以发送接收者消息的外部实体的相关权限文档:
https://developer.android.com/training/permissions/restrict-interactions#broadcast-receivers