Android LocationManager.isProviderEnabled()始终返回false
我有一个应用程序,它的位置使用网络提供商。每次启动应用程序时,它都会使用LocationManager中的Android LocationManager.isProviderEnabled()始终返回false,android,locationmanager,Android,Locationmanager,我有一个应用程序,它的位置使用网络提供商。每次启动应用程序时,它都会使用LocationManager中的isProviderEnabled()方法检查网络提供商是否已启用 如果返回false,我将向用户发出警报,以启用网络提供商,然后使用该应用程序。这种逻辑一直运行得很好,只有少数非谷歌认证的设备例外(这并不令人担心,因为它们通常也没有地图API)。最近,对于ICS上的一些设备和现在的JellyBean emulator,我得到了isProviderEnabled()的一致“false”,即使
isProviderEnabled()
方法检查网络提供商是否已启用
如果返回false,我将向用户发出警报,以启用网络提供商,然后使用该应用程序。这种逻辑一直运行得很好,只有少数非谷歌认证的设备例外(这并不令人担心,因为它们通常也没有地图API)。最近,对于ICS上的一些设备和现在的JellyBean emulator,我得到了isProviderEnabled()
的一致“false”,即使它已启用
此后,我开始使用从中返回的字符串
Settings.Secure.getString(getContentResolver(),Settings.Secure.LOCATION\u PROVIDERS\u ALLOWED))查看它是否包含“网络”。这是一个黑客,但它现在正在工作。我希望能够使用isProviderEnabled()
方法
以前有人见过这个问题吗?来自:LocationManager.GPS\u提供商的API文档 此提供程序使用卫星确定位置。取决于 条件下,此提供程序可能需要一段时间才能返回位置修复。 需要访问\u FINE\u位置的权限 因此,如果您不需要访问FINE位置,它将返回false。@naqi@gkris 我还注意到,
isProviderEnabled(LocationManager.GPS\u PROVIDER)
返回false
的问题 解决方法是要求用户将
定位方法设置为高精度
,而不是节省电池
或仅限设备
此设置在“位置设置”下可用,并且在不同的设备上具有不同的名称。在我测试过的一些设备上,此设置具有名称模式
,位置模式
,位置方法
等,并且值可以是高精度
或GPS
或GPS、Wifi和移动网络
开发者必须在这方面对用户进行培训。我也面临着这个问题!你有什么工作要做吗?