From 06a39e9e34d805b06e57f549885d32ab4b1f7b3d Mon Sep 17 00:00:00 2001 From: Joy Babafemi Date: Wed, 13 Oct 2021 18:51:58 +0000 Subject: [PATCH] Update UWB toggle display after lifecycle events. Bug: 201790864 Test: Manual Change-Id: I05cb52331fe106017b2cb6718a897690720725db --- .../AdvancedConnectedDeviceDashboardFragment.java | 11 +++++++++++ .../android/settings/uwb/UwbPreferenceController.java | 7 +++++++ 2 files changed, 18 insertions(+) diff --git a/src/com/android/settings/connecteddevice/AdvancedConnectedDeviceDashboardFragment.java b/src/com/android/settings/connecteddevice/AdvancedConnectedDeviceDashboardFragment.java index 8509ca06444..bcd47bc09cc 100644 --- a/src/com/android/settings/connecteddevice/AdvancedConnectedDeviceDashboardFragment.java +++ b/src/com/android/settings/connecteddevice/AdvancedConnectedDeviceDashboardFragment.java @@ -26,6 +26,7 @@ import com.android.settings.dashboard.DashboardFragment; import com.android.settings.nfc.AndroidBeamPreferenceController; import com.android.settings.print.PrintSettingPreferenceController; import com.android.settings.search.BaseSearchIndexProvider; +import com.android.settings.uwb.UwbPreferenceController; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.search.SearchIndexable; @@ -43,6 +44,7 @@ public class AdvancedConnectedDeviceDashboardFragment extends DashboardFragment private static final String TAG = "AdvancedConnectedDeviceFrag"; static final String KEY_BLUETOOTH = "bluetooth_settings"; + static final String KEY_UWB = "uwb_settings"; @Override public int getMetricsCategory() { @@ -64,6 +66,15 @@ public class AdvancedConnectedDeviceDashboardFragment extends DashboardFragment return R.xml.connected_devices_advanced; } + @Override + public void onAttach(Context context) { + super.onAttach(context); + UwbPreferenceController uwbPreferenceController = use(UwbPreferenceController.class); + if (uwbPreferenceController != null && getSettingsLifecycle() != null) { + getSettingsLifecycle().addObserver(uwbPreferenceController); + } + } + @Override protected List createPreferenceControllers(Context context) { return buildControllers(context, getSettingsLifecycle()); diff --git a/src/com/android/settings/uwb/UwbPreferenceController.java b/src/com/android/settings/uwb/UwbPreferenceController.java index 877c9f2f2b4..8b330a9422f 100644 --- a/src/com/android/settings/uwb/UwbPreferenceController.java +++ b/src/com/android/settings/uwb/UwbPreferenceController.java @@ -24,6 +24,7 @@ import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.pm.PackageManager; +import android.os.Handler; import android.provider.Settings; import android.uwb.UwbManager; import android.uwb.UwbManager.AdapterStateCallback; @@ -52,11 +53,13 @@ public class UwbPreferenceController extends TogglePreferenceController implemen @VisibleForTesting private final BroadcastReceiver mAirplaneModeChangedReceiver; private final Executor mExecutor; + private final Handler mHandler; private Preference mPreference; public UwbPreferenceController(Context context, String key) { super(context, key); mExecutor = Executors.newSingleThreadExecutor(); + mHandler = new Handler(context.getMainLooper()); if (isUwbSupportedOnDevice()) { mUwbManager = context.getSystemService(UwbManager.class); } @@ -65,6 +68,8 @@ public class UwbPreferenceController extends TogglePreferenceController implemen mAirplaneModeChangedReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { + mAirplaneModeOn = Settings.Global.getInt(mContext.getContentResolver(), + Settings.Global.AIRPLANE_MODE_ON, 0) == 1; updateState(mPreference); } }; @@ -114,6 +119,8 @@ public class UwbPreferenceController extends TogglePreferenceController implemen @Override public void onStateChanged(int state, int reason) { + Runnable runnable = () -> updateState(mPreference); + mHandler.post(runnable); } /** Called when activity starts being displayed to user. */