Czy możliwe jest otrzymanie powiadomienia, gdy dowolny dostawca lokalizacji jest włączony / wyłączony i upewnia się, jakie działanie miało miejsce?

Chcę otrzymywać powiadomienia, gdy użytkownik włącza lub wyłącza lokalizacje sieci lub GPS, a co ważne, chciałbym wiedzieć, który z nich się zmienił i jak. Mam odbiornik telewizyjny dlaandroid.location.PROVIDERS_CHANGED transmisja intencji, a to odbiera poprawną transmisję.

Teraz muszę spróbować określić, która akcja wystąpiła, tj. Włączyć lub wyłączyć i który dostawca został zmieniony. Wiem, że mogę zachować stan każdego dostawcy, a gdy otrzymam powiadomienie, że się zmieniło, mogłem ustalić, co się zmieniło, szukam bardziej „standardowej” metody. Wydaje się, że zamiar transmisji nie zawiera żadnych dodatków wskazujących, który dostawca się zmienił.

To jest kod, który mam obecnie.

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

A to jest mały fragment mojego Manifestu

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

Byłoby to idealne rozwiązanie, gdyby w ramach Broadcastu istniała dodatkowa informacja o tym, który dostawca zmienił się i czy został włączony lub wyłączony. Niestety tak nie jest. Czy ktoś wie o jakimkolwiek mechanizmie, dzięki któremu mogę określić, jaki stan się zmienił bez zachowania własnych zmiennych stanu.

W idealnym świecie stale monitorowałbym zmiany, ale od czasu do czasu słuchał tylko zmian lokalizacji. Chciałbym uniknąć ciągłego monitorowania zmian lokalizacji.

questionAnswers(4)

yourAnswerToTheQuestion