Это потому, что LocationManager.getLastKnownLocation () может возвращать ноль.
В своем коде вы попросили поставщика GPS обновить местоположение вашего устройства.
Но когда устройство отключено, этот метод возвращает ноль.
И если какие-либо запросы не были обработаны с помощью LocationManager, LocationManager.getLastKnownLocation () также возвращает нулевое значение.
Потому что у LocationManager нет значения «Последние известные местоположения».
(Вы можете проверить состояние LocationManager с помощью следующей команды adb)
$adb shell dumpsys location
Поэтому, если вы хотите добиться успеха со своим фрагментом кода, GPS вашего устройства включен, и LocationManager имеет «Последние известные местоположения»
Ну, я использую Метод LocationManager.getLastKnownLocation () , но немного другой.
Я просто проверяю, существует ли какое-либо значение «Последние известные местоположения» с помощью метода LocationManager.getLastKnownLocation () . Потому что это самый быстрый способ разрешения текущего значения местоположения.
Однако, если он возвращает ноль, запросить обновление местоположения через requestLocationUpdates .
Location location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if (location == null) {
// request location update!!
lm.requestLocationUpdates (LocationManager.GPS_PROVIDER, 0, 0, listener);
}
Существует также местоположение устройства для технического разрешения, я думаю, это будет огромный ответ.
Вместо этого я свяжу это видео , которое является отличным объяснением местоположения. (и другие советы !!)