how to ask user for his location in android
public class MainActivity extends AppCompatActivity { //'LocationManager' manages location tracking /*'LocationListener' gives us updates about whenever the device moves, it gives us updates on all those */ LocationManager locationManager; LocationListener locationListener; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //STEP 1: Declare and Initialize 'LocationManager' and 'LocationListener' //To get users location locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE); //To get users permissions and updates about device movement locationListener = new LocationListener() { @Override public void onLocationChanged(Location location) { Log.i("Location:", location.toString()); } @Override public void onStatusChanged(String provider, int status, Bundle extras) { } @Override public void onProviderEnabled(String provider) { } @Override public void onProviderDisabled(String provider) { } }; //STEP 2: Create a Pop up message that ask the user to access his location //The following if statement will execute when the user opens the app for the first time, which means he has //not provided permission for anything yet, in which case the we will go ahead and ask for his permission. if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 1); } //user has already granted you permission so just go ahead and get updates. In this case the code will not continue to STEP 3. else { locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener); } } //STEP 3: Respond accordingly to whether user granted permission or not @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); //Check if the user granted permission in step 2 if(grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { //If Yes, then go ahead and grab the users location user 'LocationManager' and 'LocationListener' if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) { locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener); } } } }