Estou desenvolvendo um aplicativo no sistema operacional Android. Não sei como verificar se os Serviços de Localização estão habilitados ou não.
Eu preciso de um método que retorne "true" se eles estiverem habilitados e "false" se não (por isso, no último caso, posso mostrar uma caixa de diálogo para habilitá-los).
Respostas:
Você pode usar o código abaixo para verificar se o provedor de GPS e os provedores de rede estão ativados ou não.
E no arquivo de manifesto, você precisará adicionar as seguintes permissões
fonte
lm.getAllProviders().contains(LocationManager.GPS_PROVIDER)
(ouNETWORK_PROVIDER
) garantiria que você não jogasse o usuário em uma página de configurações onde não há opção de rede.Settings.ACTION_SECURITY_SETTINGS
deve serSettings.ACTION_LOCATION_SOURCE_SETTINGS
Eu uso esse código para verificar:
fonte
Como agora em 2020
A maneira mais recente, melhor e mais curta é
fonte
LocationManager.class
nogetSystemService
método porque chamada requer API 23 ;-)Você pode usar esse código para direcionar os usuários para as Configurações, onde eles podem ativar o GPS:
fonte
isProviderEnabled()
egetProviders(true)
.isProviderEnabled()
egetProviders(true)
respondem quando essa configuração é ativada (ou desativada, dependendo de como você a vê), ficaria muito curioso para saber o que encontrou.Migrar para o Android X e usar
e use LocationManagerCompat
Em java
Na cidade Kotlin
fonte
Before API version LOLLIPOP [API Level 21], this method would throw SecurityException if the location permissions were not sufficient to use the specified provider.
se você não tiver permissão para a rede ou o provedor de gps, isso poderá gerar uma exceção, dependendo da opção ativada. Verifique o código fonte para mais informações.Trabalhando com a resposta acima, na API 23, você precisa adicionar verificações de permissões "perigosas" e verificar o próprio sistema:
fonte
Se nenhum provedor estiver ativado, "passivo" é o melhor provedor retornado. Consulte https://stackoverflow.com/a/4519414/621690
fonte
Sim, você pode conferir abaixo o código:
com a permissão no arquivo de manifesto:
fonte
Esta cláusula if verifica facilmente se os serviços de localização estão disponíveis na minha opinião:
fonte
Eu uso dessa maneira para NETWORK_PROVIDER, mas você pode adicionar e para GPS .
No onCreate eu coloquei
E método de verificação
fonte
locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
Este é um método muito útil que retorna "
true
" seLocation services
estiver ativado:fonte
Para obter a localização geográfica atual no google maps do Android, você deve ativar a opção de localização do dispositivo. Para verificar se a localização está ativada ou não, basta chamar esse método usando seu
onCreate()
método.fonte
For kotlin
diálogo
ligue assim
Dica: a caixa de diálogo precisa das seguintes importações (o Android Studio deve lidar com isso para você)
E no manifesto você precisa das seguintes permissões
fonte
Você pode solicitar as atualizações de local e mostrar a caixa de diálogo juntos, como o GoogleMaps também. Aqui está o código:
Se você precisar de mais informações, verifique a classe LocationRequest .
fonte
eu uso o primeiro código begin create method isLocationEnabled
e verifico Condition if ture Abra o mapa e falso dê a intenção ACTION_LOCATION_SOURCE_SETTINGS
fonte
Pode fazer da maneira mais simples
fonte
Se você estiver usando o AndroidX, use o código abaixo para verificar se o Serviço de Localização está ativado ou não:
fonte
Para verificar o provedor de rede, basta alterar a cadeia de caracteres passada para isProviderEnabled para LocationManager.NETWORK_PROVIDER se você verificar os valores de retorno para o provedor GPS e o NETwork - ambos false significa que não há serviços de localização
fonte
fonte
fonte
}
Use o método isLocationEnabled para detectar que os serviços de localização estão habilitados.
A página https://github.com/Polidea/RxAndroidBle/issues/327# fornecerá mais informações sobre por que não usar o provedor passivo, em vez disso, use o modo de localização.
fonte