在Android 8中注册BOOT_COMPLETED接收器

4nd*_*o1d 12 android broadcastreceiver android-8.0-oreo

我们即将更新我们的App Android API 26.在有关广播接收器的文档中,它说明了这一点

针对Android 8.0或更高版本的应用无法再在其清单中注册隐式广播的广播接收器

隐式广播接收器被描述为

没有专门针对该应用的广播.例如,ACTION_PACKAGE_REPLACED

所以我认为这android.intent.action.BOOT_COMPLETED被认为是一个隐含的接收者.

此外,它声明隐式接收器必须Activity通过使用注册Context.registerReceiver().但对于正在倾听BOOT_COMPLETED事件的接收器来说,这是没有意义的.

处理这个问题的正确方法是什么?我可以把这个接收器放在我的清单中吗?

Fra*_*ank 13

BOOT_COMPLETED仍然被接受.

https://developer.android.com/guide/components/broadcast-exceptions.html

无需改变任何东西.确保您在Android 8中进行测试.

  • 谷歌的耻辱有许多例外。例外正是因为糟糕的设计。 (2认同)

Com*_*are 9

ACTION_BOOT_COMPLETED隐式广播白名单中,因此您可以在清单中注册它.