在Android上获取DOCK_STATE的问题

时间:2013-12-10 03:35:05

标签: java android android-intent sdk

关注此文: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,我应该能够很简单地得到它。

1 个答案:

答案 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;
  }