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); 
  • Cómo obtener el lugar actual mediante Google Place API
  • Por qué getSpeed ​​() siempre devuelve 0 en android
  • Solicitando actualización de una sola ubicación, AVD se bloquea
  • La API de localización de servicios de Google Play / setSmallestDisplacement no funciona
  • La ubicación devuelve 0.0 con WIFI / 3G / 4G en Lollipop 5.0.2
  • Tiempo de viaje entre dos ubicaciones en Google Map Android API V2
  • Descubra la velocidad del usuario en android Utilizando GPS
  • ¿Cómo encontrar la ubicación del usuario usando la torre celular?
  • ¿Es posible saber mi ubicación vino de gps o glonass?
  • ¿Cómo funciona? RequestLocationUpdates () + LocationRequest / Listener
  • Uso de GoogleApiClient + LocationServices sin actualizar
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.