Недостаточно просто получить locationManager и вызвать getLastKnownLocation()
, потому что до обновления не будет «последнего известного местоположения». Вы пропускаете запрос, предоставленный классом LocationManager:
public void requestLocationUpdates(java.lang.String provider,
long minTime,
float minDistance,
android.location.LocationListener listener)
Если ваша деятельность реализует LocationListener, как у меня, вы можете передать «this» как LocationListener для вызова, происходящего из метода этого класса.В противном случае, есть несколько других перегрузок, принимающих классы Activity или Looper.
locationManager.requestLocationUpdates(provider, minTime, minDistance, this);
Чтобы убедиться, что устройство получает местоположение, запрашивайте обновления - но вы также можете установить охранники в случае невозможности найтипровайдеры или getLastKnownLocation
возвращают ноль.
locationManager.requestLocationUpdates(provider, 1, 0, this);
mostRecentLocation = locationManager.getLastKnownLocation(provider);
if(mostRecentLocation == null)
// lower your expectations, or send user message with Toast or something similar
Скажите пользователю, чтобы он включил совместное использование своего местоположения или другие услуги провайдера.