How do I find out if the GPS of an Android device is enabled How do I find out if the GPS of an Android device is enabled android android

How do I find out if the GPS of an Android device is enabled


Best way seems to be the following:

 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(@SuppressWarnings("unused") final DialogInterface dialog, @SuppressWarnings("unused") final int id) {                   startActivity(new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS));               }           })           .setNegativeButton("No", new DialogInterface.OnClickListener() {               public void onClick(final DialogInterface dialog, @SuppressWarnings("unused") final int id) {                    dialog.cancel();               }           });    final AlertDialog alert = builder.create();    alert.show();}


In android, we can easily check whether GPS is enabled in device or not using LocationManager.

Here is a simple program to Check.

GPS Enabled or Not :-Add the below user permission line in AndroidManifest.xml to Access Location

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

Your java class file should be

public class ExampleApp extends Activity {    /** Called when the activity is first created. */    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);        if (locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)){            Toast.makeText(this, "GPS is Enabled in your devide", Toast.LENGTH_SHORT).show();        }else{            showGPSDisabledAlertToUser();        }    }    private void showGPSDisabledAlertToUser(){        AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);        alertDialogBuilder.setMessage("GPS is disabled in your device. Would you like to enable it?")        .setCancelable(false)        .setPositiveButton("Goto Settings Page To Enable GPS",                new DialogInterface.OnClickListener(){            public void onClick(DialogInterface dialog, int id){                Intent callGPSSettingIntent = new Intent(                        android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS);                startActivity(callGPSSettingIntent);            }        });        alertDialogBuilder.setNegativeButton("Cancel",                new DialogInterface.OnClickListener(){            public void onClick(DialogInterface dialog, int id){                dialog.cancel();            }        });        AlertDialog alert = alertDialogBuilder.create();        alert.show();    }}

The output will looks like

enter image description here

enter image description here


yes GPS settings cannot be changed programatically any more as they are privacy settings and we have to check if they are switched on or not from the program and handle it if they are not switched on.you can notify the user that GPS is turned off and use something like this to show the settings screen to the user if you want.

Check if location providers are available

    String provider = Settings.Secure.getString(getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED);    if(provider != null){        Log.v(TAG, " Location providers: "+provider);        //Start searching for location and update the location text when update available        startFetchingLocation();    }else{        // Notify users and show settings if they want to enable GPS    }

If the user want to enable GPS you may show the settings screen in this way.

Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);startActivityForResult(intent, REQUEST_CODE);

And in your onActivityResult you can see if the user has enabled it or not

    protected void onActivityResult(int requestCode, int resultCode, Intent data){        if(requestCode == REQUEST_CODE && resultCode == 0){            String provider = Settings.Secure.getString(getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED);            if(provider != null){                Log.v(TAG, " Location providers: "+provider);                //Start searching for location and update the location text when update available. // Do whatever you want                startFetchingLocation();            }else{                //Users did not switch on the GPS            }        }    }

Thats one way to do it and i hope it helps.Let me know if I am doing anything wrong.