我希望有人可以对此有所了解。我试图找出为什么突然间我的2.2代码无法与2.3一起使用。我有点不解。这是已经工作的代码,但现在抛出空指针异常。
@Override
public void onStart(Intent intent, int startId) {
LocationListener locationListener = new LocationListener() {
public void onLocationChanged(Location l){
Log.i("MYSERVICE", "LocationChanged " + l);
}
public void onStatusChanged(String provider, int status, Bundle Extras) {}
public void onProviderEnabled(String provider){
Log.i("MYSERVICE", "ProviderEnabled " + provider);
}
public void onProviderDisabled(String provider) {}
};
lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);
super.onStart(intent, startId);
String location = getLocation();
}
public String getLocation() {
String provider = LocationManager.GPS_PROVIDER;
Location location = lm.getLastKnownLocation(provider);
Double lat = location.getLatitude();
Log.i("lat", lat.toString());
double lng = location.getLongitude();
String writeString = lat+"&"+lng;
return writeString;
}
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
我也在使用2.3模拟器。任何帮助都会非常感激,欢呼!
答案 0 :(得分:1)
getLastKnownLocation
可以返回null。如果是这样,您需要使用您注册的侦听器等待onLocationChanged
中的值。
答案 1 :(得分:-1)
似乎android 2.3不能与lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);
您需要将这两个参数设置为至少1和1:
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1, 1, locationListener);