我正在尝试调试我的应用程序,出于某种原因,当我开始获取当前位置时,我永远不会获得对LocationListener的更新...我已在清单中添加了正确的权限。这是我用来测试是否至少调用一个回调的示例代码片段:
我已经测试了三种不同的设备(Galaxy S3,Galaxy Note 2,Google Nexus 4),这些设备都配备了GPS&网络已启用。
LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, new LocationListener() {
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
MyLog.debug("FOO");
}
@Override
public void onProviderEnabled(String provider) {
MyLog.debug("FOO");
}
@Override
public void onProviderDisabled(String provider) {
MyLog.debug("FOO");
}
@Override
public void onLocationChanged(Location location) {
MyLog.debug("FOO");
}
});
答案 0 :(得分:-1)
检查您是否在清单中添加了正确的权限(ACCESS_COARSE_LOCATION
或ACCESS_FINE_LOCATION
)。
此外,您不应指定提供商名称,例如LocationManager.GPS_PROVIDER
,因为用户可能已在其设备上禁用了他的gps。 LocationManager
提供了方法getBestProvider()
,您应该调用此方法以获得最佳可用提供商。