Android LocationManager.isProviderEnabled()始终返回false

naq*_*aqi 10 android locationmanager

我有一个应用程序,它使用网络提供程序的位置.每次应用程序启动时,它都会检查是否使用LocationManager中的isProviderEnabled()方法启用了网络提供程序.如果返回false,则向用户发出警报以启用网络提供程序,然后使用该应用程序.这个逻辑一直运行得非常好,除了一些非例外的非Google认证设备(因为它们通常也没有Maps API).最近,对于ICS上的一些设备,现在在JellyBean模拟器上,即使启用了isProviderEnabled(),我也会得到一致的"假".

我已经转移到使用从Settings.Secure.getString(getContentResolver(),Settings.Secure.LOCATION_PROVIDERS_ALLOWED)返回的字符串,以查看它是否包含"网络".这是一个黑客,但它现在正在工作.我希望能够使用isProviderEnabled()方法.

以前有人看过这个问题吗?

Phi*_*vid 1

来自 API 文档:LocationManager.GPS_PROVIDER

该提供商使用卫星确定位置。根据情况,该提供商可能需要一段时间才能返回位置修复。需要权限 ACCESS_FINE_LOCATION。

因此,如果您不需要 ACCESS_FINE_LOCATION 它将返回 false。