缺乏GPS准确性导致空指针

时间:2017-02-11 22:47:29

标签: java android nullpointerexception android-location locationmanager

ACCESS_COARSE_LOCATION和ACCESS_FINE_LOCATON都已包含在清单中。活动中还包括:

import android.location.Location;
import android.location.LocationManager;

我有一个带有以下类

的导航抽屉的监听器
private class DrawerItemClickListener implements ListView.OnItemClickListener {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

    LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    Location location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
        if (location != null)
        {
            final double longitude = location.getLongitude();
            final double latitude = location.getLatitude();
        }

    selectItem(position);
    }
}

由此location = null,因此location.getLongitude();失败。我当然可以使用if (location != null)来避免这种情况,但我希望找到latlong

为什么位置始终为空?

1 个答案:

答案 0 :(得分:1)

在硬件方面找到位置并不是一件容易的事。您无法告诉设备我想知道我的位置,所以现在就把它给我!它需要观察GPS卫星的一些数据,如果外面有清晰的可见性,否则它使用其他可用选项,如wifi。直到您的设备提出有效位置,您应该等待。我建议您观察onLocationChanged事件并在发生此事件时更新列表视图。最好使用null条件,直到它检测到您的位置。