Android 收听 ACTION_DOCK_EVENT

Android listen for ACTION_DOCK_EVENT

我正在尝试根据 this documentation and ACTION_DOCK_EVENT 监听码头更改事件。

我的接收器从未被击中。

我的代码看起来很简单,所以我想知道监听停靠事件是否需要权限?我是否遗漏了与 ACTION_DOCK_EVENT 相关的其他内容?

AndroidManifest.xml

<receiver android:enabled="true" android:exported="true" android:label="MyReceiver" android:name="path.to.MyReceiver">
  <intent-filter>
    <action android:name="android.intent.action.DOCK_EVENT"/>
  </intent-filter>
</receiver>

MyReceiver.java

public class MyReceiver extends BroadcastReceiver {

  @Override
  public void onReceive(Context context, Intent intent) {
    if (intent.getAction() == Intent.ACTION_DOCK_EVENT) {
      //Never hit :(
    }
  }

}

我正在通过将 phone 插入/拔出交流电源插座和 macbook pro 进行测试。我正在使用 Android 4.4.4.

的 Moto X(第二代)

底座是一种非常特殊的配件,如 types of docks:

  • Car
  • Desk
  • Low-End (Analog) Desk
  • High-End (Digital) Desk

您会注意到其中 none 与插入电源相对应。为此,您可能希望 monitor changes in charging state 使用 Intent 过滤器,例如

<receiver android:name=".PowerConnectionReceiver">
  <intent-filter>
    <action android:name="android.intent.action.ACTION_POWER_CONNECTED"/>
    <action android:name="android.intent.action.ACTION_POWER_DISCONNECTED"/>
  </intent-filter>
</receiver>