O Android LocationManager.isProviderEnabled () sempre retorna falso

Eu tenho um aplicativo que usa o provedor de rede para sua localização. Toda vez que os aplicativos são iniciados, ele verifica se o provedor de rede está ativado usando o método isProviderEnabled () no LocationManager. Se ele retornar false, apresento um alerta para o usuário ativar o Network Provider e, em seguida, uso o aplicativo. Essa lógica funcionou muito bem, com algumas exceções com dispositivos certificados que não são do Google (não é uma preocupação, pois eles geralmente não têm a API do Google Maps). Ultimamente, com alguns dispositivos no ICS e agora no emulador JellyBean eu recebo um "falso" consistente para isProviderEnabled () mesmo que esteja habilitado.

Desde então, mudei para o uso da string retornada de Settings.Secure.getString (getContentResolver (), Settings.Secure.LOCATION_PROVIDERS_ALLOWED)) para ver se ela contém "network". É um hack, mas está funcionando por enquanto. Eu adoraria poder usar o método isProviderEnabled ().

Alguém já viu esse problema antes?

questionAnswers(2)

yourAnswerToTheQuestion