title: How to get Current Location(Street,City, etc,..) using gps in Android
body: <p>I want to create a app to Track the Users who installed my App, So i have a following code for tracking, This code working good but it will return only CITY NAME. But i need full details like street name, city, like wise . </p>
  
  <pre><code>    public class GetCurrentLocation extends Activity
          implements OnClickListener {
  
      private LocationManager locationMangaer = null;
      private LocationListener locationListener = null;
  
      private Button btnGetLocation = null;
      private EditText editLocation = null;
      private ProgressBar pb = null;
  
      private static final String TAG = "Debug";
      private Boolean flag = false;
  
      @Override
      public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
  
  
          //if you want to lock screen for always Portrait mode
          setRequestedOrientation(ActivityInfo
                  .SCREEN_ORIENTATION_PORTRAIT);
  
          pb = (ProgressBar) findViewById(R.id.progressBar1);
          pb.setVisibility(View.INVISIBLE);
  
          editLocation = (EditText) findViewById(R.id.editTextLocation);
  
          btnGetLocation = (Button) findViewById(R.id.btnLocation);
          btnGetLocation.setOnClickListener(this);
  
          locationMangaer = (LocationManager)
                  getSystemService(Context.LOCATION_SERVICE);
  
      }
  
      @Override
      public void onClick(View v) {
          flag = displayGpsStatus();
          if (flag) {
  
              Log.v(TAG, "onClick");
  
              editLocation.setText("Please!! move your device to" +
                      " see the changes in coordinates." + "\nWait..");
  
              pb.setVisibility(View.VISIBLE);
              locationListener = new MyLocationListener();
  
              if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED &amp;&amp; ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
                  // TODO: Consider calling
                  //    ActivityCompat#requestPermissions
                  // here to request the missing permissions, and then overriding
                  //   public void onRequestPermissionsResult(int requestCode, String[] permissions,
                  //                                          int[] grantResults)
                  // to handle the case where the user grants the permission. See the documentation
                  // for ActivityCompat#requestPermissions for more details.
                  return;
              }
              locationMangaer.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000, 10, locationListener);
  
          } else {
              alertbox("Gps Status!!", "Your GPS is: OFF");
          }
  
      }
  
      /*----Method to Check GPS is enable or disable ----- */
      private Boolean displayGpsStatus() {
          ContentResolver contentResolver = getBaseContext()
                  .getContentResolver();
          boolean gpsStatus = Settings.Secure
                  .isLocationProviderEnabled(contentResolver,
                          LocationManager.GPS_PROVIDER);
          if (gpsStatus) {
              return true;
  
          } else {
              return false;
          }
      }
  
      /*----------Method to create an AlertBox ------------- */
      protected void alertbox(String title, String mymessage) {
          AlertDialog.Builder builder = new AlertDialog.Builder(this);
          builder.setMessage("Your Device's GPS is Disable")
                  .setCancelable(false)
                  .setTitle("** Gps Status **")
                  .setPositiveButton("Gps On",
                          new DialogInterface.OnClickListener() {
                              public void onClick(DialogInterface dialog, int id) {
                                  // finish the current activity
                                  // AlertBoxAdvance.this.finish();
                                  Intent myIntent = new Intent(
                                          Settings.ACTION_SECURITY_SETTINGS);
                                  startActivity(myIntent);
                                  dialog.cancel();
                              }
                          })
                  .setNegativeButton("Cancel",
                          new DialogInterface.OnClickListener() {
                              public void onClick(DialogInterface dialog, int id) {
                                  // cancel the dialog box
                                  dialog.cancel();
                              }
                          });
          AlertDialog alert = builder.create();
          alert.show();
      }
  
      /*----------Listener class to get coordinates ------------- */
      private class MyLocationListener implements LocationListener {
          @Override
          public void onLocationChanged(Location loc) {
  
              editLocation.setText("");
              pb.setVisibility(View.INVISIBLE);
              Toast.makeText(getBaseContext(),"Location changed : Lat: " +
                              loc.getLatitude()+ " Lng: " + loc.getLongitude(),
                      Toast.LENGTH_SHORT).show();
              String longitude = "Longitude: " +loc.getLongitude();
              Log.v(TAG, longitude);
              String latitude = "Latitude: " +loc.getLatitude();
              Log.v(TAG, latitude);
  
      /*----------to get City-Name from coordinates ------------- */
              String cityName=null;
              Geocoder gcd = new Geocoder(getBaseContext(),
                      Locale.getDefault());
              List&lt;Address&gt;  addresses;
              try {
                  addresses = gcd.getFromLocation(loc.getLatitude(), loc
                          .getLongitude(), 1);
                  if (addresses.size() &gt; 0)
                      System.out.println(addresses.get(0).getLocality());
                  cityName=addresses.get(0).getLocality();
              } catch (IOException e) {
                  e.printStackTrace();
              }
  
              String s = longitude+"\n"+latitude +
                      "\n\nMy Currrent City is: "+cityName;
              editLocation.setText(s);
          }
  
          @Override
          public void onProviderDisabled(String provider) {
              // TODO Auto-generated method stub
          }
  
          @Override
          public void onProviderEnabled(String provider) {
              // TODO Auto-generated method stub
          }
  
          @Override
          public void onStatusChanged(String provider,
                                      int status, Bundle extras) {
              // TODO Auto-generated method stub
          }
      }
  }
  </code></pre>