Ich versuche, den aktuellen Standort in Android zu bekommen, und es ist OK, wenn ich auf Android M oder niedriger bin, aber wenn ich meine Anwendung auf Android N ausführen, ist der Standort null und wenn ich Breitengrad erhalten will gibt es 0 zurück . hier ist mein CodeWie bekomme ich den aktuellen Standort in Android 7?
try {
if (!isGPSEnabled && !isNetworkEnabled) {
} else {
this.canGetLocation = true;
if (isNetworkEnabled) {
locationManager.requestLocationUpdates(
LocationManager.NETWORK_PROVIDER,
MIN_TIME_BW_UPDATES,
MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
Log.d("Network", "Network");
if (locationManager != null) {
location = locationManager
.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
if (location != null) {
latitude = location.getLatitude();
longitude = location.getLongitude();
}
}
}
if (isGPSEnabled) {
if (location == null) {
locationManager.requestLocationUpdates(
LocationManager.GPS_PROVIDER,
MIN_TIME_BW_UPDATES,
MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
Log.d("GPS Enabled", "GPS Enabled");
if (locationManager != null) {
location = locationManager
.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if (location != null) {
latitude = location.getLatitude();
longitude = location.getLongitude();
}
}
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
seine für mich auf Android L gearbeitet, onLocationChangeListener funktionieren nicht auf Android 7 für mich zu @CommonsWare –
@BehnamEskandari nutzen: [Diese Probe app] (https://github.com/commonsguy/cw-omnibus/tree/v8.7/Location/Classic) erhält erfolgreich einen Standort auf einem Google Pixel mit Android 7.1. Für Standorte in den USA wird eine Wettervorhersage für diesen Standort angezeigt. – CommonsWare
Die Hauptsache, die über 'getLastKnownLocation() 'verstanden werden muss, ist, dass, wenn Sie kürzlich den Standort auf dem Gerät aktiviert oder das Gerät neu gestartet haben, dieser IMMER NULL zurückgibt, bis ein Standort beim anrufenden Anbieter (GPS, Netzwerk) empfangen wird) von JEDER APP, nicht nur von dir. Nur weil Sie 'requestLocationUpdates() 'aufgerufen haben, heißt das nicht, dass Sie sofort einen Speicherort haben. Auch wenn Sie einen Speicherort von 'getLastKnownLocation()' erhalten, bedeutet dies nicht, dass es neu ist. Es könnte Minuten oder Stunden alt sein. –