title: How to request Location Permission at runtime
body: <p>In the manifest file I added permissions coarse and fine, and when I run on device with Android 6, nothing happens! I try 
  everything but no way to get location updates...</p>
  
  <p>What am I doing wrong?</p>
  
  <pre><code>public class MainActivity extends AppCompatActivity implements LocationListener {
  
      LocationManager locationManager;
      String provider;
  
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
  
          locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
  
          provider = locationManager.getBestProvider(new Criteria(), false);
  
          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;
          }
          Location location = locationManager.getLastKnownLocation(provider);
  
          if (location != null) {
  
              Log.i("Location Info", "Location achieved!");
  
          } else {
  
              Log.i("Location Info", "No location :(");
  
          }
  
      }
  
  
      @Override
      protected void onResume() {
          super.onResume();
  
          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;
          }
          locationManager.requestLocationUpdates(provider, 400, 1, this);
  
      }
  
      @Override
      protected void onPause() {
          super.onPause();
  
          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;
          }
          locationManager.removeUpdates(this);
  
      }
  
      @Override
      public void onLocationChanged(Location location) {
  
          Double lat = location.getLatitude();
          Double lng = location.getLongitude();
  
          Log.i("Location info: Lat", lat.toString());
          Log.i("Location info: Lng", lng.toString());
  
      }
  
      @Override
      public void onStatusChanged(String provider, int status, Bundle extras) {
  
      }
  
      @Override
      public void onProviderEnabled(String provider) {
  
      }
  
      @Override
      public void onProviderDisabled(String provider) {
  
      }
  
      public void getLocation(View view) {
  
          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;
          }
          Location location = locationManager.getLastKnownLocation(provider);
  
          onLocationChanged(location);
  
  
      }
  
  }
  </code></pre>