关注此文:http://developer.android.com/training/monitoring-device-state/docking-monitoring.html
我试图得到的是手机的停靠状态是0还是2.我现在拥有的代码在dockState处抛出空指针异常。目前所有应用程序都在加载没有“setContentView”的活动并执行以下代码。
IntentFilter ifilter = new IntentFilter(Intent.ACTION_DOCK_EVENT);
Intent dockStatus = registerReceiver(null, ifilter);
int dockState = dockStatus.getIntExtra(Intent.EXTRA_DOCK_STATE, 0);
尽管它是否处于汽车停靠模式,它会抛出一个空指针。根据sdk doc,我应该能够很简单地得到它。
答案 0 :(得分:0)
出现空指针,因为Intent本身是null
,因此您无法获得额外内容。
对接内容是Battery Intent的一部分(对我而言,这似乎是Android的一个错误)。
这将有效(代码可以工作,但我的设备不支持停靠,因此我无法判断它是否真的有效或始终返回“未停靠”):
IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
Intent batteryStatus = this.registerReceiver(null, ifilter);
// Read docking state
int dockState = batteryStatus.getIntExtra(Intent.EXTRA_DOCK_STATE, -1);
boolean isDocked = true;
if (dockState == Intent.EXTRA_DOCK_STATE_UNDOCKED) {
isDocked = false;
}