Android: Check if Location Services Enabled using Fused Location Provider Android: Check if Location Services Enabled using Fused Location Provider android android

Android: Check if Location Services Enabled using Fused Location Provider


This android developer training tutorial could help - here's the basics:

Code to run in your Activity onCreate():

 // Create an instance of GoogleAPIClient.    if (mGoogleApiClient == null) {        mGoogleApiClient = new GoogleApiClient.Builder(this)                .addConnectionCallbacks(this)                .addOnConnectionFailedListener(this)                .addApi(LocationServices.API)                .build();    }    mGoogleApiClient.connect();    LocationRequest mLocationRequest = new LocationRequest();    mLocationRequest.setInterval(10000);    mLocationRequest.setFastestInterval(5000);    mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);    LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder()            .addLocationRequest(mLocationRequest);    PendingResult<LocationSettingsResult> result =            LocationServices.SettingsApi.checkLocationSettings(mGoogleApiClient, builder.build());    result.setResultCallback(new ResultCallback<LocationSettingsResult>() {        @Override        public void onResult(LocationSettingsResult locationSettingsResult) {            final Status status = locationSettingsResult.getStatus();            final LocationSettingsStates LS_state = locationSettingsResult.getLocationSettingsStates();            switch (status.getStatusCode()) {                case LocationSettingsStatusCodes.SUCCESS:                    // All location settings are satisfied. The client can initialize location                    // requests here.                    break;                case LocationSettingsStatusCodes.RESOLUTION_REQUIRED:                    // Location settings are not satisfied. But could be fixed by showing the user                    // a dialog.                    try {                        // Show the dialog by calling startResolutionForResult(),                        // and check the result in onActivityResult().                        status.startResolutionForResult(LocationByGPS.this, REQUEST_CHECK_SETTINGS);                    } catch (IntentSender.SendIntentException e) {                        // Ignore the error.                    }                    break;                case LocationSettingsStatusCodes.SETTINGS_CHANGE_UNAVAILABLE:                    // Location settings are not satisfied. However, we have no way to fix the                    // settings so we won't show the dialog.                    break;            }        }    });

Override this Method:

@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {    final LocationSettingsStates states = LocationSettingsStates.fromIntent(data);    switch (requestCode) {        case REQUEST_CHECK_SETTINGS:            switch (resultCode) {                case Activity.RESULT_OK:                    // All required changes were successfully made                    GetUserLocation();//FINALLY YOUR OWN METHOD TO GET YOUR USER LOCATION HERE                    break;                case Activity.RESULT_CANCELED:                    // The user was asked to change settings, but chose not to                    break;                default:                    break;            }            break;    }}

Remember to Implement these in your class:

public class MyClass extends AppCompatActivity implements    ActivityCompat.OnRequestPermissionsResultCallback,    GoogleApiClient.ConnectionCallbacks,    GoogleApiClient.OnConnectionFailedListener{  protected static final int REQUEST_CHECK_SETTINGS = 0x1;  /*      your code i.e. with the above code etc.... */ }

Good explanation here in this Google developer link.

Cheers!


See SettingsApi: check your location request then ensure that the device's system settings are properly configured for the app's location needs.


As now in 2020

Latest , Best and shortest way is

    public boolean isLocationEnabled()    {     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {// This is new method provided in API 28                    LocationManager lm = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);                    return lm.isLocationEnabled();                } else {// This is Deprecated in API 28                    int mode = Settings.Secure.getInt(context.getContentResolver(), Settings.Secure.LOCATION_MODE,                            Settings.Secure.LOCATION_MODE_OFF);                    return  (mode != Settings.Secure.LOCATION_MODE_OFF);                }    }