我正在尝试按this documentation和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 :(
}
}
}
我正在通过将我的手机插入/拔出我的交流电源插座和macbook pro进行测试。我正在使用Android 4.4.4的Moto X(第二代)。
答案 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>