¿Es posible recibir una notificación cuando algún proveedor de ubicación está habilitado / deshabilitado y determinar qué acción se ha producido?

Deseo recibir una notificación cuando el usuario habilite o deshabilite las ubicaciones de red o GPS, y lo que es más importante, quiero saber cuál ha cambiado y cómo. Tengo un receptor de difusión para elandroid.location.PROVIDERS_CHANGED Intento de emisión y esto está recibiendo la emisión correcta.

Ahora tengo que intentar y determinar qué acción ha ocurrido, es decir, habilitar o deshabilitar y qué proveedor ha cambiado. Sé que podría mantener el estado de cada proveedor y luego, cuando recibo la notificación de que han cambiado, entonces puedo averiguar qué ha cambiado, estoy buscando un método más "estándar" para hacer esto. El intento de transmisión no parece tener ningún extra para indicar qué proveedor ha cambiado.

Este es el código que tengo actualmente.

    public class LocationProviderChangedReceiver extends BroadcastReceiver {
    private final static String TAG = "LocationProviderChangedReceiver";

    @Override
    public void onReceive(Context context, Intent intent) {
      if (intent.getAction().matches("android.location.PROVIDERS_CHANGED"))
      {
        Log.i(TAG,"Location Providers changed");
        Bundle bundle = intent.getExtras();
        if (bundle == null) {
          Log.d(TAG, "No extras data");
         } else {
           Log.d(TAG, "Bundle received of size " + bundle.size);
         } 
      }
    }
  }

Y este es un pequeño extracto de mi Manifiesto.

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

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

Esto sería perfecto si hubiera un extra dentro de la transmisión que indicara qué proveedor había cambiado y si estaba habilitado o deshabilitado. Por desgracia, este no es el caso. Alguien está al tanto de algún mecanismo mediante el cual pueda determinar qué estado ha cambiado sin mantener mis propias variables de estado.

En un mundo ideal, vigilaría los cambios constantemente, pero solo escucharía los cambios de ubicación de vez en cuando. Me gustaría evitar monitorear constantemente los cambios de ubicación.