如何检查当前的Android设备是否具有Google的位置服务?

问题描述:

众所周知,一些Android手机没有Google服务,比如华为,中兴和三星等设备,所以当使用android.location.LocationManager并尝试使用NetworkProvider请求当前位置时,它总是没有响应。 GPSProvider(“gps”)工作正常,但在里面需要太多时间。因此,我现在正在使用第三方位置提供商,这可能不够准确,不适用于备份计划。如何检查当前的Android设备是否具有Google的位置服务?

问题是,如果设备没有Google服务,我不想等待超时时间并应用备份,在应用程序初始化时是否有任何方法可以检测到这种情况?

我在Google服务响应之后为当前设置了一个标志,我不知道是否有其他选择。

谢谢:)

+0

您正在使用哪种第三方服务? – 2015-12-27 16:01:27

最后我用以下策略:

  1. 开始找到既谷歌的和第三方供应商,等到这两个供应商的回报(或超时)。

  2. 检查结果,如果Google的服务失败,则在偏好设置中添加一个布尔标志,以表明Google定位服务在此设备中不可用,并且如果标志已设置,请勿尝试使用Google的位置服务。

  3. 几天后,再次运行上述步骤重新检查。

这是一个很好的问题。我从来没有尝试过。但是在LocationManager上有一个方法:

public List<String> getProviders (boolean enabledOnly) 

也许你可以使用它?

+0

谢谢〜,我已经在很早的时候尝试过了。提供程序已启用(可以在设置 - 某些设备中的位置中进行切换)。也许供应商没有删除设置,但删除了功能〜_〜 – 2012-07-27 02:26:28

+0

啊,明白了。嗯,这是一个有趣的问题。 – Kaediil 2012-07-27 02:36:59