É possível obter uma notificação quando algum provedor de localização é ativado / desativado e verificar qual ação ocorreu?

Desejo receber uma notificação quando o usuário habilitar ou desabilitar locais da Rede ou do GPS e, mais importante, gostaria de saber qual deles eles mudaram e como. Eu tenho um receptor de transmissão para oandroid.location.PROVIDERS_CHANGED intenção de transmissão e isso está recebendo a transmissão correta.

Agora preciso tentar determinar qual ação ocorreu, ou seja, ativar ou desativar e qual provedor foi alterado. Eu sei que eu poderia manter o estado de cada provedor e, em seguida, quando recebo notificação de que eles mudaram, então eu poderia descobrir o que mudou, estou procurando um método mais "padrão" de fazer isso. A intenção da transmissão não parece ter nenhum acréscimo para indicar qual provedor foi alterado.

Este é o código que tenho atualmente.

    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);
         } 
      }
    }
  }

E este é um pequeno extrato do meu manifesto

  <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>

Isso seria perfeito se houvesse um extra dentro do Broadcast que informasse qual provedor havia mudado e se estava habilitado ou desabilitado. Infelizmente, esse não é o caso. Alguém está ciente de qualquer mecanismo pelo qual eu possa determinar o estado que mudou sem manter minhas próprias variáveis ​​de estado.

Em um mundo ideal, eu monitoraria as mudanças constantemente, mas apenas escutaria alterações de localização ocasionalmente. Eu gostaria de evitar o monitoramento constante de alterações de localização.