I am working on map related android application and I need to check location access enable or not in client side development if location services is not enable show the dialog prompt.
How to enable "Location access" Programmatically in android?
Programmatically we can turn on GPS in two ways. First, redirect the user to location settings of a device (by code) or another way is to ask to turn on GPS by GPS dialog using LocationSettingsRequest and SettingsClient.
Android UsersAccess your Android Settings menu. Select Location Services. Turn on "Allow Access to my Location."
Use below code to check. If it is disabled, dialog box will be generated
public void statusCheck() { final LocationManager manager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); if (!manager.isProviderEnabled(LocationManager.GPS_PROVIDER)) { buildAlertMessageNoGps(); } } private void buildAlertMessageNoGps() { final AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setMessage("Your GPS seems to be disabled, do you want to enable it?") .setCancelable(false) .setPositiveButton("Yes", new DialogInterface.OnClickListener() { public void onClick(final DialogInterface dialog, final int id) { startActivity(new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS)); } }) .setNegativeButton("No", new DialogInterface.OnClickListener() { public void onClick(final DialogInterface dialog, final int id) { dialog.cancel(); } }); final AlertDialog alert = builder.create(); alert.show(); }
Here is a simple way of programmatically enabling location like Maps app:
protected void enableLocationSettings() { LocationRequest locationRequest = LocationRequest.create() .setInterval(LOCATION_UPDATE_INTERVAL) .setFastestInterval(LOCATION_UPDATE_FASTEST_INTERVAL) .setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY); LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder() .addLocationRequest(locationRequest); LocationServices .getSettingsClient(this) .checkLocationSettings(builder.build()) .addOnSuccessListener(this, (LocationSettingsResponse response) -> { // startUpdatingLocation(...); }) .addOnFailureListener(this, ex -> { if (ex instanceof ResolvableApiException) { // Location settings are NOT satisfied, but this can be fixed by showing the user a dialog. try { // Show the dialog by calling startResolutionForResult(), and check the result in onActivityResult(). ResolvableApiException resolvable = (ResolvableApiException) ex; resolvable.startResolutionForResult(TrackingListActivity.this, REQUEST_CODE_CHECK_SETTINGS); } catch (IntentSender.SendIntentException sendEx) { // Ignore the error. } } }); }
And onActivityResult:
@Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { if (REQUEST_CODE_CHECK_SETTINGS == requestCode) { if(Activity.RESULT_OK == resultCode){ //user clicked OK, you can startUpdatingLocation(...); }else{ //user clicked cancel: informUserImportanceOfLocationAndPresentRequestAgain(); } } }
You can see the documentation here: https://developer.android.com/training/location/change-location-settings
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With