Android 应用程序中的 GPS_PROVIDER 错误
Posted
技术标签:
【中文标题】Android 应用程序中的 GPS_PROVIDER 错误【英文标题】:GPS_PROVIDER Error in Android Application 【发布时间】:2012-10-11 06:10:17 【问题描述】:我创建了一个 android 应用来检索位置。我尝试使用 GPS_PROVIDER,它返回 null .. 但是当我使用 NETWORK_PROVIDER 时工作顺利.. 任何人都可以帮我解决这个问题吗?
这里是代码
位置位置 = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
当我将"NETWORK_PROVIDER"
替换为"GPS_PROVIDER"
时,位置变为空。
我在manifest中添加了以下三个权限
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"/>
【问题讨论】:
你的清单文件是什么样的? 我在 manifest 中添加了以下三个权限<uses-permission android:name="android.permission.ACCESS_GPS"></uses-permission>
@Lucifer ACCESS_GPS
不再使用。据了解,那是在 1.0 之前
【参考方案1】:
您的 GPS 位置为空可能有两个原因
-
可能是您的 GPS 未激活。尝试通过
setting menu => Location & Security => Check Use GPS Satellites
激活您的 GPS。
可能您目前在 GPS 不工作的建筑物中。从大楼里出来检查一下。大部分时间都可能发生这种情况。
【讨论】:
+1 是的,同意你的看法,请在第一个选项中显示完整的设置路径,这对像 OP 这样的新用户很有用。:)【参考方案2】:根据documentation
如果提供者当前被禁用,则返回 null。
确保您的 GPS 在设备上处于活动状态,这样您就不会收到 null。
编辑:
还可以尝试使用GPS_PROVIDER
运行requestLocationUpdates()
或者两次,同时使用NETWORK_PROVIDER
。 LocationManager
以最快的方式检索位置并停止搜索。由于 GPS 位置的检索速度比网络位置慢,因此在找到它后立即停止,因此为 GPS 返回 null。
【讨论】:
NETWORK_PROVIDER 未链接到 GPS。 GPS 已启用并且在我的建筑物内工作正常.. 我添加了ACCESS_GPS
已不再使用,因此您可以将其从清单文件中删除。【参考方案3】:
当我将“NETWORK_PROVIDER”替换为 “GPS_PROVIDER”
要解决此问题,请务必启用定位服务:
记住文档:
如果提供程序当前被禁用,则返回 null。
作为一个选项,如果 GPS 被禁用,您可以同时使用这两个提供商,然后检查网络提供商:
...
myLocation = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if(myLocation == null)
myLocation = lm.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
if(myLocation != null)
//Get values for latitude and longitude!
...
【讨论】:
以上是关于Android 应用程序中的 GPS_PROVIDER 错误的主要内容,如果未能解决你的问题,请参考以下文章
如何使 Android 应用程序与 Android Studio 中的所有 6735 Android 设备兼容 [关闭]
如何检查由单独 Android 应用程序中的服务启动的 Android 应用程序是不是已完成加载?