大家好,我正在将当前的纬度和经度从MainActivity发送到另一个类,但是每次执行代码时,都会出现Null Pointer Error。
这是我的主要活动:
public String getLocationName() {
String streetaddress = null;
Geocoder geocoder = new Geocoder(MainActivity.this);
try {
List<Address> addresses = geocoder.getFromLocation(lastLocation.getLatitude(), lastLocation.getLongitude(), 1);
if (addresses.size() > 0) {
Address address = addresses.get(0);
streetaddress = address.getAddressLine(0);
Log.e("StreetAddress", String.valueOf(streetaddress));
}
} catch (IOException e) {
e.printStackTrace();
}
return streetaddress;
}
此方法在MainActivity中工作正常,但在另一个类中,当我访问此方法时,应用程序崩溃。
这是我访问此方法的方式:
MainActivity mainActivity = new MainActivity();
String Z = mainActivity.getLocationName();
Log.e("Z here", Z );
使用LocationManager。
LocationManager lm =
(LocationManager)getSystemService(Context.LOCATION_SERVICE);
Location location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
double longitude = location.getLongitude();
double latitude = location.getLatitude();
private final LocationListener locationListener = new LocationListener() {
public void onLocationChanged(Location location) {
longitude = location.getLongitude();
latitude = location.getLatitude();
}
}
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 2000, 10,
locationListener);
如果您想使用GPS,则需要向您的应用程序授予ACCESS_FINE_LOCATION权限。
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
您可能还想在GPS不可用时添加ACCESS_COARSE_LOCATION权限,并使用getBestProvider()方法选择您的位置提供商。