Ist es möglich, eine Benachrichtigung zu erhalten, wenn ein Standortanbieter aktiviert / deaktiviert ist, und festzustellen, welche Aktion stattgefunden hat?

Ich möchte eine Benachrichtigung erhalten, wenn der Benutzer Netzwerk- oder GPS-Standorte aktiviert oder deaktiviert. Wichtig ist, dass ich weiß, welche geändert wurden und wie. Ich habe einen Rundfunkempfänger für dieandroid.location.PROVIDERS_CHANGED Sendeabsicht und dies empfängt die richtige Sendung.

Ich muss jetzt versuchen, festzustellen, welche Aktion stattgefunden hat, d. H. Aktivieren oder deaktivieren und welcher Anbieter geändert wurde. Ich weiß, dass ich den Status jedes Anbieters beibehalten kann. Wenn ich dann eine Benachrichtigung erhalte, dass er sich geändert hat, kann ich herausfinden, was sich geändert hat. Ich suche nach einer "Standard" -Methode, um dies zu tun. Die Sendeabsicht scheint keine Extras zu haben, die anzeigen, welcher Anbieter gewechselt hat.

Dies ist der Code, den ich derzeit habe.

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

Und dies ist ein kleiner Auszug aus meinem Manifest

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

Dies wäre perfekt, wenn es in der Sendung einen Zusatz gäbe, der angibt, welcher Anbieter gewechselt hat und ob er aktiviert oder deaktiviert ist. Dies ist leider nicht der Fall. Kennt jemand einen Mechanismus, mit dem ich feststellen kann, welcher Zustand sich geändert hat, ohne meine eigenen Zustandsvariablen beizubehalten?

In einer idealen Welt würde ich ständig nach Änderungen suchen, aber nur gelegentlich auf Standortänderungen achten. Ich möchte vermeiden, ständig nach Standortänderungen zu suchen.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage