BroadcastReceiver需要android.permission.RECEIVE_BOOT_COMPLETED

时人不识凌云木,直待凌云始道高。这篇文章主要讲述BroadcastReceiver需要android.permission.RECEIVE_BOOT_COMPLETED相关的知识,希望能为你提供帮助。
我的android应用程序需要通知BOOT_COMPLETED事件。 AndroidManifest.xml包含< uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> < application> 标签内部我有以下接收器定义:

< receiver android:name=".OnBootReceiver" android:permission="android.permission.RECEIVE_BOOT_COMPLETED"> < intent-filter> < action android:name="android.intent.action.BOOT_COMPLETED" /> < /intent-filter> < /receiver>

需要android:permission="android.permission.RECEIVE_BOOT_COMPLETED"吗?如果它没有到位会发生什么,是否存在任何应用程序能够模拟启动事件并调用我的应用程序的风险?
在一些例子中,the receiver contains the RECEIVE_BOOT_COMPLETED permission和some the receiver does not。是否存在API级别的特定差异?
答案
是否需要android:permission =“android.permission.RECEIVE_BOOT_COMPLETED”?
不,您不一定要在permission声明中针对此特定情况需要< receiver> 属性。来自docs:
android:permission
广播公司必须具有向广播接收器发送消息的权限的名称。如果未设置此属性,则< application> 元素的permission属性设置的权限适用于广播接收器。如果两个属性均未设置,则接收方不受权限保护。
因此,如果您想确保只有拥有授权权限的广播公司才能发送该属性,您只需要此属性。然而,BOOT_COMPLETED是一个protected intent,无论如何只能由系统发送。拥有它不会有什么坏处,但也没有必要。
编辑:
permission属性留在那里可能不会有什么坏处,但有那么多Android版本和设备更改,我不会包含该属性只是为了确定。我没有将它包含在我的应用中。
另一答案Android文档说明:如果您未请求此权限,则您当时不会收到广播。
Link
另一答案给接收者标签
< receiver android:name=".OnBootReceiver"> < intent-filter> < action android:name="android.intent.action.BOOT_COMPLETED"/> < /intent-filter> < /receiver>

【BroadcastReceiver需要android.permission.RECEIVE_BOOT_COMPLETED】确保还包括已完成的引导权限。
< uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>


    推荐阅读