BroadcastReceiver 需要 android.permission.RECEIVE_BOOT_COMPLETED

Juu*_*nen 5 android broadcastreceiver android-permissions

我的 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>
Run Code Online (Sandbox Code Playgroud)

android:permission="android.permission.RECEIVE_BOOT_COMPLETED"必须的吗?如果它没有到位会发生什么,是否有任何应用程序能够模拟启动事件并调用我的应用程序的风险?

在某些示例中,接收器包含 RECEIVE_BOOT_COMPLETED 权限,某些接收器不包含。是否存在 API 级别的特定差异?

Ric*_*rdo 5

是否需要 android:permission="android.permission.RECEIVE_BOOT_COMPLETED" ?

不,对于这种特殊情况,您不一定需要声明中的permission属性<receiver>。从文档

android:permission

广播者必须向广播接收者发送消息的权限名称。如果未设置此属性,则<application>元素permission属性设置的权限适用于广播接收器。如果这两个属性都没有设置,则接收者不受权限保护。

因此,如果您想确保只有具有授权权限的广播公司才能发送它,则您只需要此属性。但是,它BOOT_COMPLETED是一个受保护的意图,无论如何只能由系统发送。把它放在那里不会有什么坏处,但也没有必要。

编辑:

可能不会伤害离开permission属性存在,但有这么多的Android版本和设备改变了那里,我将不包括属性只是要确定。我没有将它包含在我的应用程序中。