Search code examples
androidlocationwifi

How with broadcast receiver should I subscribe to listen for location services change


I am working in an app that manages wifi connections, I have the problem that in android 6.0 the wifi scanning is off when the location services are turned off by the user.

What I want is to know if there is an action to which I can subscribe to listen when the user turns off and on the location services. I have searched in Android documentation and there are two possible actions, but I am not sure which one to use.

The actions are

android.location.PROVIDERS_CHANGED

android.location.MODE_CHANGED

The Documentation is not helping me.


Solution

  • This is useful when user want to trigger any action on turn On/Off location provides

    You should add this action in manifest

    <action android:name="android.location.PROVIDERS_CHANGED" />
    

    and after add this action you can trigger your broadcast receiver

    <receiver android:name=".GpsLocationReceiver">
        <intent-filter>
            <action android:name="android.location.PROVIDERS_CHANGED" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </receiver>
    

    And in your BroadcastReceiver class you have to implement LocationListener in that class which is given following below..

      public class GpsLocationReceiver extends BroadcastReceiver {        
            @Override
            public void onReceive(Context context, Intent intent) {
                if (intent.getAction().matches("android.location.PROVIDERS_CHANGED")) {
                    Toast.makeText(context, "in android.location.PROVIDERS_CHANGED",
                    Toast.LENGTH_SHORT).show();
               LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
        if( !locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER) ) {
           //NO GPS
        }else{
    //Gps is on
         }
                }
            }
        }