Android: Check If Location Services Enabled Using Fused Location Provider


Answer :

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:

@Override protected 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);                  }     } 

Comments

Popular posts from this blog

Are Regular VACUUM ANALYZE Still Recommended Under 9.1?

Can Feynman Diagrams Be Used To Represent Any Perturbation Theory?