public static String getAddress(Context context ,String latitude , String longitude) { Geocoder geocoder; List<Address> addressList; StringBuilder addressBuilder = new StringBuilder(); geocoder = new Geocoder(context,Locale.getDefault()); try{ addressList = geocoder.getFromLocation(Double.valueOf(latitude),Double.valueOf(longitude),1); Address address = addressList.get(0); addressBuilder.append(address.getAddressLine(0)).append(",").append(address.getLocality()).append(",") .append(address.getAdminArea()).append(",").append(address.getCountryName()).append("||").append(address.getCountryName()); }catch (Exception ex) { ex.printStackTrace(); } return addressBuilder.toString(); }
For user location you can use Reverse Geocoding For it u have to send only lat,long. Code is below:- public String getAddress(double lat, double lng,Context mContext) { Geocoder geocoder = new Geocoder(mContext, Locale.getDefault()); try { List<Address> addresses = geocoder.getFromLocation(lat, lng,1); String add=""; for(int i=0;i<addresses.size();i++){ Address obj = addresses.get(i); //String = obj.getAddressLine(i); add = add+obj.getAddressLine(i)+","+obj.getLocality()+","+obj.getAdminArea()+","+obj.getCountryName(); Log.v("IGA", "\n"+"Address " + add); } return add; } catch (IOException e) { e.printStackTrace(); Toast.makeText(mContext, e.getMessage(), Toast.LENGTH_SHORT).show(); return null; } }
if(city==null) city=""; String state=addre.getAdminArea(); if(state==null) state="";