Я разрабатываю приложение на ОС Android. Я не знаю, как проверить, включены ли службы определения местоположения или нет.
Мне нужен метод, который возвращает «true», если они включены, и «false», если нет (поэтому в последнем случае я могу показать диалог, чтобы включить их).
Ответы:
Вы можете использовать приведенный ниже код, чтобы проверить, включены ли gps-провайдеры и сетевые провайдеры.
И в файле манифеста, вам нужно будет добавить следующие разрешения
источник
lm.getAllProviders().contains(LocationManager.GPS_PROVIDER)
(илиNETWORK_PROVIDER
) убедится, что вы не бросаете пользователя на страницу настроек, где нет опции сети.Settings.ACTION_SECURITY_SETTINGS
должно бытьSettings.ACTION_LOCATION_SOURCE_SETTINGS
Я использую этот код для проверки:
источник
Как сейчас в 2020
Последний, лучший и самый короткий путь
источник
LocationManager.class
вgetSystemService
метод , потому что вызов требует API 23 ;-)Вы можете использовать этот код для направления пользователей в Настройки, где они могут включить GPS:
источник
isProviderEnabled()
иgetProviders(true)
методы.isProviderEnabled()
и,getProviders(true)
когда такая настройка включена (или отключена, в зависимости от того, как вы на нее смотрите), мне было бы очень интересно узнать, с чем вы столкнулись.Перейдите на Android X и используйте
и использовать LocationManagerCompat
В яве
В котлине
источник
Before API version LOLLIPOP [API Level 21], this method would throw SecurityException if the location permissions were not sufficient to use the specified provider.
если у вас нет прав доступа к сети или провайдеру GPS, он может выдать исключение, в зависимости от того, какой из них включен. Проверьте исходный код для получения дополнительной информации.Отрабатывая ответ выше, в API 23 вам нужно добавить «опасные» проверки разрешений, а также проверку самой системы:
источник
Если ни один провайдер не включен, «пассивный» является лучшим возвращенным провайдером. См. Https://stackoverflow.com/a/4519414/621690.
источник
Да, вы можете проверить ниже код:
с разрешения в файле манифеста:
источник
Это если пункт легко проверяет, доступны ли услуги определения местоположения, по моему мнению:
источник
Я использую такой способ для NETWORK_PROVIDER, но вы можете добавить и для GPS .
В onCreate я положил
И метод проверки
источник
locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
Это очень полезный метод, который возвращает "
true
", еслиLocation services
включены:источник
Чтобы получить текущее географическое местоположение на картах Google Android, вы должны включить опцию местоположения вашего устройства. Чтобы проверить, включено местоположение или нет, вы можете просто вызвать этот метод из вашего
onCreate()
метода.источник
Для котлин
диалог
позвони так
Подсказка: диалоговое окно нуждается в следующем импорте (Android Studio должна справиться с этим за вас)
И в манифесте вам нужны следующие разрешения
источник
Вы можете запросить обновления местоположения и показать диалог вместе, также как и в GoogleMaps. Вот код:
Если вам нужна дополнительная информация, проверьте класс LocationRequest .
источник
я использую первый код начала создать метод isLocationEnabled
и я проверяю Условие, если ture Откройте карту, и ложь дает намерение ACTION_LOCATION_SOURCE_SETTINGS
источник
Можно сделать самым простым способом
источник
Если вы используете AndroidX, используйте приведенный ниже код, чтобы проверить, включена служба определения местоположения или нет:
источник
Чтобы проверить провайдера сети, вам просто нужно изменить строку, переданную isProviderEnabled, на LocationManager.NETWORK_PROVIDER, если вы проверяете возвращаемые значения как для провайдера GPS, так и для провайдера NETwork - оба значения false означают отсутствие служб определения местоположения
источник
источник
источник
}
Используйте метод isLocationEnabled, чтобы обнаружить, что службы определения местоположения включены.
Страница https://github.com/Polidea/RxAndroidBle/issues/327# даст больше информации, почему бы не использовать пассивный провайдер, вместо этого использовать режим местоположения.
источник