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
Post a Comment