最初在我的应用程序中,我在清单中设置了此接收器:
<receiver android:name = ".BootReceiver"
android:exported = "false">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
但是,在新的更新中,我删除了属性android:exported = "false"
从分析来看,BootReceiver
电话有很大的下降。可以更改更新的应用程序中的属性导致BootReceiver
不再被触发吗?
答案 0 :(得分:1)
不,它会激发。只有外部应用程序无法触发该广播来操纵你的app.Hence,它会按原样运行。谢谢!
答案 1 :(得分:1)
android:exported = "false"
表示,广播接收者可以接收的唯一消息是由具有相同用户ID的相同应用程序或应用程序的组件发送的消息。
如果您将导出设置为false,操作系统将无法触发您的BootReceiver
。结果它没有被解雇。
注意:强>
如果至少有一个过滤器,则意味着广播接收器旨在接收系统或其他应用程序广播的意图,因此默认值为&#34; true&#34;。
避免android:exported = "false"
继续接收广播
答案 2 :(得分:0)
来自doc:
广播接收器是否可以接收来自的消息 其应用之外的来源 - &#34; true&#34;如果它可以,&#34;假&#34;如果 不。如果&#34; false&#34;,广播接收器可以接收的唯一消息 是由相同应用程序或应用程序的组件发送的那些 具有相同的用户ID。默认值取决于是否 广播接收器包含意图过滤器没有任何过滤器 意味着它只能由指定它的Intent对象调用 确切的班级名称。这意味着接收器仅用于 应用程序内部使用(因为其他人通常不会知道 班级名称)。所以在这种情况下,默认值为&#34; false&#34;。在 另一方面,至少有一个过滤器的存在意味着 广播接收器旨在接收由广播播出的意图 系统或其他应用程序,因此默认值为&#34; true&#34;。
表示如果你删除了属性,那么因为你有意图过滤器,因此默认情况下它将是真的。