title: find city name and country name from latitude longitude using geocoder in android
body: <p>i am getting the latitude and longitude from currentlocation and 
  display the city country and state name from latitude longitude using geocoder
  here i put the my logacat which have error</p>
  
  <blockquote>
    <p>Log.error</p>
  </blockquote>
  
  <pre><code>05-15 12:13:40.584: E/Running(309): Mehod getBestProvider
  05-15 12:13:40.674: E/Running(309): Mehod getBestProvider
  05-15 12:13:57.083: E/Running(309): C Latitude27.422006
  05-15 12:13:57.083: E/Running(309): C Longitude22.084095
  05-15 12:13:57.093: E/Running(309): try called
  05-15 12:13:57.093: E/Running(309): Exception called
  05-15 12:13:57.093: W/System.err(309): java.io.IOException: Service not Available
  05-15 12:13:57.113: W/System.err(309):at
       ndroid.location.Geocoder.getFromLocation(Geocoder.java:117)
  05-15 12:13:57.113: W/System.err(309):  at 
  </code></pre>
  
  <blockquote>
    <p>Activityclass</p>
  </blockquote>
  
  <pre><code> public class CitycountrymapActivity extends Activity implements LocationListener {
   private LocationManager locationManager;
   //private GeoPoint currentPoint;
   private Location currentLocation;
   double currentlatitude;
   double currentlongitude;
   String provider;
  
  @Override
  public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.main);
      getLocation();
  
  }
  
  
   public void getLocation()
      {
          provider=getBestProvider();
  
          currentLocation=locationManager.getLastKnownLocation(provider);
  
          if(currentLocation!=null)
          {
              setCurrentLocation(currentLocation);
  
          }
          else
          {
              Toast.makeText(this, "Location not yet acquired", Toast.LENGTH_LONG).show();
          }
  
      }
  
  
      public String getBestProvider()
      {
          locationManager=(LocationManager)getSystemService(Context.LOCATION_SERVICE);
          Criteria criteria = new Criteria();
          criteria.setPowerRequirement(Criteria.NO_REQUIREMENT);
          criteria.setAccuracy(Criteria.NO_REQUIREMENT);
          String bestprovider=locationManager.getBestProvider(criteria, true);
          Log.e("Running","Mehod getBestProvider");
          return bestprovider;
      }
  
      public void setCurrentLocation(Location location)
      {
  
  
          //currentlatitude=(double)(location.getLatitude());
          //currentlongitude=(double)(location.getLongitude());
  
          currentlatitude =27.422006;
          currentlongitude=22.084095;
  
          currentLocation = new Location("");
  
          //currentPoint = new GeoPoint((int)(72.454565* 1E6),(int)(23.4572448 * 1E6)); 
          //currentPoint  = new GeoPoint((int)(72.454565),(int)(23.4572448));
  
           Global.clat=currentlatitude;
           Global.clon=currentlongitude;
  
          Log.e("Running","C Latitude"+Global.clat);
          Log.e("Running","C Longitude"+Global.clon);
  
          try
          {
  
  
          Log.e("Running","try called");  
  
          Geocoder geocoder = new Geocoder(this, Locale.getDefault());
          List&lt;Address&gt; addresses=geocoder.getFromLocation(currentlatitude, currentlongitude, 1);  
  
          Log.e("Running","geocoder set");
          Log.e("Running","addresses");
  
          String address = addresses.get(0).getAddressLine(0); 
          String city = addresses.get(0).getAddressLine(1); 
          String country = addresses.get(0).getAddressLine(2);
  
          Log.e("Running","Latitude"+currentlatitude);
          Log.e("Running","Longitude"+currentlongitude);
          Log.e("Running","Address"+address);
          Log.e("Running","City--&gt;"+city);
          Log.e("Running","Country-&gt;"+country);
  
          }
          catch(Exception e)
          {
              Log.e("Running","Exception called");
              e.printStackTrace();
          }
      }
  
      public void onLocationChanged(Location location) {
          // TODO Auto-generated method stub
  
          Toast.makeText(this, "Loction Changed", Toast.LENGTH_SHORT).show();
          setCurrentLocation(location);
      }
  
      protected void onResume()
      {
          super.onResume();
          locationManager.requestLocationUpdates(getBestProvider(), 1000, 1, this);
      }
  
      protected void onPause()
      {
          super.onPause();
          locationManager.removeUpdates(this);
  
      }
  
      public void onProviderDisabled(String provider) {
          // TODO Auto-generated method stub
          Toast.makeText(this, "Provider Disabled", Toast.LENGTH_SHORT).show();
      }
  
      public void onProviderEnabled(String provider) {
          // TODO Auto-generated method stub
          Toast.makeText(this, "Provider Enabled", Toast.LENGTH_SHORT).show();
      }
  
      public void onStatusChanged(String provider, int status, Bundle extras) {
          // TODO Auto-generated method stub
          Toast.makeText(this, "Staus Changed", Toast.LENGTH_SHORT).show();
      }
  
     }
  </code></pre>