GetLastKnownLocation devuelve null

He leído algunas preguntas sobre esto, pero no encontré la respuesta que necesitaba.

Por lo tanto, el caso es que tengo mi mapa establecido, y quiero agarrar mi ubicación actual gps. He comprobado que mis variables no son NULL pero aún así mi resultado de:

getLastKnownLocation(provider, false); 

Me da null sin embargo, así que aquí es donde necesito ayuda. He añadido permisos para la ubicación COARSE + FINE. Pero normalmente tengo todo tipo de datos de red deshabilitados para mi teléfono, porque no estoy muy contento con los gastos de flujo de datos impredecibles en mi cuenta de teléfono. Así que sólo tengo WiFi habilitado y conectado para esta prueba.

¿Hay algo más que debo habilitar para que esto sea posible? Yo creo que WiFi debería ser suficiente?

Utilice este método para obtener la última ubicación conocida:

 LocationManager mLocationManager; Location myLocation = getLastKnownLocation(); private Location getLastKnownLocation() { mLocationManager = (LocationManager)getApplicationContext().getSystemService(LOCATION_SERVICE); List<String> providers = mLocationManager.getProviders(true); Location bestLocation = null; for (String provider : providers) { Location l = mLocationManager.getLastKnownLocation(provider); if (l == null) { continue; } if (bestLocation == null || l.getAccuracy() < bestLocation.getAccuracy()) { // Found best last known location: %s", l); bestLocation = l; } } return bestLocation; } 

Está intentando obtener la ubicación en caché del proveedor de red. Tienes que esperar unos minutos hasta que consigas una solución válida. Dado que el caché del proveedor de red está vacío, obviamente obtienes un valor nulo.

Añadir este código

 if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { return; } 

Antes de la función:

locationManagerObject.requestLocationUpdates(LocationManager.GPS_PROVIDER, MINIMUM_TIME_BETWEEN_UPDATES, MINIMUM_DISTANCE_CHANGE_FOR_UPDATES, new LocationListener()) , así como la función: locationManagerObject.getLastKnownLocation(LocationManager.GPS_PROVIDER)

Reemplazar la línea con

 Location location = LocationServices.FusedLocationApi.getLastLocation(googleApiClient); 
  • ¿Hay alguna forma alternativa de verificar si el proveedor de ubicación de red está habilitado?
  • Android: comprobación de si la ubicación de los ajustes de Google está habilitada
  • ¿Cómo cambio entre el GPS y el proveedor de la red?
  • Compruebe si la geolocalización ha sido falsificada
  • Obtener ubicación GPS a través de un servicio en Android
  • Google maps haz para mostrar las direcciones de usuario / título en android MapFragment
  • Obtener el radio del mapa visible en Android
  • ¿Cómo puedo obtener la ubicación GPS actual mediante programación en Android?
  • Notificaciones de empuje basadas en ubicación para Android
  • Solicitando actualización de una sola ubicación, AVD se bloquea
  • Android FusedLocationProviderApi: La intención de entrada no tiene LocationResult o LocationAvailability
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.