最近,我创建了一个简单的应用程序来获取GPS位置并将其显示在Android手机上。一开始,我尝试了几次后就能获取位置。但是,在我重新安装APK文件后,getLastKnownLocation()
总是返回null
值。
开发环境:
- API 10姜饼2.3.6
- 使用GPS提供程序
下面是我应用到我的Android项目的代码:
public class MyActivity extends MapActivity {
protected void onCreate(Bundle savedInstanceState) {
mapView = (MapView) findViewById(R.id.myTripMap);
mapController = mapView.getController();
mapView.setSatellite(false);
mapView.setStreetView(true);
mapView.displayZoomControls(false);
mapView.setBuiltInZoomControls(true);//
mapView.setClickable(true);
mapController.setZoom(14);
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setAltitudeRequired(false);
criteria.setBearingRequired(false);
criteria.setCostAllowed(true);
criteria.setPowerRequirement(Criteria.POWER_LOW);
provider = locationManager.getBestProvider(criteria, true);
location = locationManager.getLastKnownLocation(provider);
updateMyCurrentLoc(location);
locationManager.requestLocationUpdates(provider, 2, 1, locationListener);
}
private final LocationListener locationListener = new LocationListener() {
public void onLocationChanged(Location location) {
updateMyCurrentLoc(location);
}
public void onProviderDisabled(String provider) {
updateMyCurrentLoc(null);
}
public void onProviderEnabled(String provider) {
}
public void onStatusChanged(String provider, int status,
Bundle extras) {
}
};
private void updateMyCurrentLoc(Location location) {
if (location != null) {
// other codes to get the address and display
Toast.makeText(getBaseContext(), "provider used : " + provider).show(); //testing purpose
} else {
str = "No location found";
Toast.makeText(getBaseContext(), str, Toast.LENGTH_SHORT).show();
}
}
}
有人能提出一个可能的解决方案来解决getLastKnownLocation()
返回的null
值吗?
4条答案
按热度按时间xoefb8l81#
尝试以下代码
brqmpdu12#
这个解决方案是我对code by Ravi Tamada的小小改进。
iq0todco3#
您只需要在代码中再添加一行
sycxhyv74#
我通过eclipse重新安装后遇到了同样的问题。我解决了进入Android设置/安全/应用程序权限并确认应用程序的位置权限。