如何在Android 8.0上检测插入targetSDKVersion的耳机>;=26

如何在Android 8.0上检测插入targetSDKVersion的耳机>;=26,android,android-broadcastreceiver,android-8.0-oreo,Android,Android Broadcastreceiver,Android 8.0 Oreo,在Android 8.0、Oreo之前,您可以使用注册广播。由于Android O的后台执行限制,您无法在没有通知的情况下执行此操作 虽然ACTION_HEADSET_PLUG是一个例外广播,但它仍然不会发送到清单注册的接收者 因此,您不能使用后台服务。你不能通过清单接收者被叫醒。解决办法是什么?从不更新您的targetSDKVersion?根据官方文档,您似乎可以使用无Android O限制的ACTION\u HEADSET\u PLUG,因为它位于: 注:许多隐式广播目前不受此限制 限制。应

在Android 8.0、Oreo之前,您可以使用注册广播。由于Android O的后台执行限制,您无法在没有通知的情况下执行此操作

虽然ACTION_HEADSET_PLUG是一个例外广播,但它仍然不会发送到清单注册的接收者


因此,您不能使用后台服务。你不能通过清单接收者被叫醒。解决办法是什么?从不更新您的targetSDKVersion?

根据官方文档,您似乎可以使用无Android O限制的
ACTION\u HEADSET\u PLUG
,因为它位于:

注:许多隐式广播目前不受此限制 限制。应用程序可以继续为这些应用程序注册接收器 在其清单中广播,无论应用程序的API级别如何 瞄准。有关豁免广播的列表,请参阅

更新:

但是IRL,正如我所写的,只有


例如,
ACTION\u header\u PLUG
和not
Intent的标志。例如,标志\u RECEIVER\u包括\u BACKGROUND
标志。

由于我认为这是Android 8.0的一个被忽视的反响,我向框架团队提出了一个问题。如果我正确地阅读了源代码,文档似乎是不正确的。似乎你是对的-源代码是真理的源泉。我去查一下。