我正在尝试获取Country,State,City,Pincode,SubRegion,Address的详细信息。但有时它返回City为空值或SubRegion为空值。此处附有图片
这是我的代码。
String locationCountry = "", locationState = "", locationCity = "", locationPincode = "", locationSubRegion = "", locationAddress = "";
Geocoder gCoder;
List<Address> addresses;
double latitude = 0, longitude = 0;
GPStracker g = new GPStracker(getApplicationContext());
Location l = g.getLocation();
if (l != null) {
latitude = l.getLatitude();
longitude = l.getLongitude();
}else {
l = g.getLocation();
}
gCoder = new Geocoder(this, Locale.getDefault());
try {
addresses = gCoder.getFromLocation(latitude, longitude, 1);
if (addresses != null && addresses.size() > 0) {
locationCountry = addresses.get(0).getCountryName();
locationState = addresses.get(0).getAdminArea();
locationCity = addresses.get(0).getLocality();
locationPincode = addresses.get(0).getPostalCode();
locationSubRegion = addresses.get(0).getSubLocality();
locationAddress = addresses.get(0).getAddressLine(0);
}
} catch (Exception e) {
}
答案 0 :(得分:1)
Geo coder API将根据lat long返回值,如果API数据库中没有这些值(city,那么它将仅返回NULL,据我所知您对此无能为力。您必须处理这些的情况下,以确保您的应用不会崩溃。
处理这些情况包括必须使用if
进行检查,条件是该特定值是null或具有某个值,因为如果您在代码中的某处使用了任何值而没有检查,并且该值是否为如果为null,则只要该特定值变为null,应用程序便可能崩溃。