How to check if Location Services are enabled? How to check if Location Services are enabled? android android

How to check if Location Services are enabled?


You can use the below code to check whether gps provider and network providers are enabled or not.

LocationManager lm = (LocationManager)context.getSystemService(Context.LOCATION_SERVICE);boolean gps_enabled = false;boolean network_enabled = false;try {    gps_enabled = lm.isProviderEnabled(LocationManager.GPS_PROVIDER);} catch(Exception ex) {}try {    network_enabled = lm.isProviderEnabled(LocationManager.NETWORK_PROVIDER);} catch(Exception ex) {}if(!gps_enabled && !network_enabled) {    // notify user    new AlertDialog.Builder(context)        .setMessage(R.string.gps_network_not_enabled)        .setPositiveButton(R.string.open_location_settings, new DialogInterface.OnClickListener() {            @Override            public void onClick(DialogInterface paramDialogInterface, int paramInt) {                context.startActivity(new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS));            }        })        .setNegativeButton(R.string.Cancel,null)        .show();    }

And in the manifest file, you will need to add the following permissions

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


I use this code for checking:

public static boolean isLocationEnabled(Context context) {    int locationMode = 0;    String locationProviders;    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT){        try {            locationMode = Settings.Secure.getInt(context.getContentResolver(), Settings.Secure.LOCATION_MODE);        } catch (SettingNotFoundException e) {            e.printStackTrace();            return false;        }        return locationMode != Settings.Secure.LOCATION_MODE_OFF;    }else{        locationProviders = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED);        return !TextUtils.isEmpty(locationProviders);    }} 


As now in 2020

Latest, Best and shortest way is

@SuppressWarnings("deprecation")public static Boolean isLocationEnabled(Context context) {    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {        // This is a new method provided in API 28        LocationManager lm = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);        return lm.isLocationEnabled();    } else {        // This was 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);    }}