Android监听ACTION_DOCK_EVENT

时间:2015-04-22 22:55:11

标签: android android-intent broadcastreceiver intentfilter

我正在尝试按this documentationACTION_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 :(
    }
  }

}

我正在通过将我的手机插入/拔出我的交流电源插座和macbook pro进行测试。我正在使用Android 4.4.4的Moto X(第二代)。

1 个答案:

答案 0 :(得分:2)

码头是一种非常特殊的配件类型,如types of docks

所示
  
      
  • 汽车
  •   
  •   
  • 低端(模拟)服务台
  •   
  • 高端(数字)服务台
  •   

您会注意到,这些都不符合插入电源的情况。为此,您可能希望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>