2012-07-11 133 views
10

我有一个应用程序使用网络提供商的位置。每次启动应用程序时,它都会检查LocationManager中是否使用isProviderEnabled()方法启用网络提供程序。如果返回false,则向用户提供一条警报,以启用网络提供程序,然后使用该应用程序。这种逻辑运行得非常好,除了少数例外与非谷歌认证的设备(不担心,因为他们通常没有Maps API)。最近,在ICS上的一些设备上,现在在JellyBean仿真器上,即使启用了isProviderEnabled(),我也会得到一致的“false”。Android LocationManager.isProviderEnabled()总是返回假

我已经转移到使用从 返回的字符串Settings.Secure.getString(getContentResolver(),Settings.Secure.LOCATION_PROVIDERS_ALLOWED))来查看它是否包含“network”。这是一个黑客,但它现在正在工作。我很想能够使用isProviderEnabled()方法。

有没有人看过这个问题?

+2

我也面临这个问题!你有任何的解决办法吗? – gkris 2012-07-19 00:32:56

回答

0

从已API文档:LocationManager.GPS_PROVIDER

这提供者确定使用卫星位置。根据 条件,此提供程序可能需要一段时间才能返回定位修复。 需要权限ACCESS_FINE_LOCATION。

所以,如果你不需要ACCESS_FINE_LOCATION它将返回false。

0

@naqi @gkris 我也注意到这个问题,isProviderEnabled(LocationManager.GPS_PROVIDER)返回false
解决这也让用户设置Location MethodHigh Accuracy而不是Battery SavingDevice Only

此设置下的位置设置可用,并且有不同的设备上不同的名称。在我所测试的一些设备,这个设置是名ModeLocation ModeLocation Method等也值可以High AccuracyGPSGPS, Wifi and Mobile Networks

开发人员必须培训用户这一点。

相关问题