时人不识凌云木,直待凌云始道高。这篇文章主要讲述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"/>
推荐阅读
- Android推送通知服务无法在Lollipop上启动
- 从最近的任务中删除应用程序时,Android静态BroadcastReceiver无法正常工作
- 如何将项目添加到具有Android Room中父实体的外键引用的子实体()
- APPWIDGET_UPDATE奥利奥兼容性
- AlarmManager和BroadcastReceiver的LocalNotification未在Android O(oreo)中启动
- Android - 使用广播接收器重新加载活动
- HM10与Arduino和Android BLE之间的蓝牙低功耗大数据传输
- 不运行时接收消息,Xamarin Android上的显式广播和隐式广播
- 即使屏幕在Android中被锁定,也会启动活动屏幕