Merge "Fix NPE crash in UwbPreferenceController and optimize the lifecycle observer adding condition in page" am: b2a466d92f am: a9c6040eb8

Original change: https://android-review.googlesource.com/c/platform/packages/apps/Settings/+/2206258

Change-Id: I3048482c0e9c74bc4488fb76e7166b4e94bf1e98
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/src/com/android/settings/connecteddevice/AdvancedConnectedDeviceDashboardFragment.java b/src/com/android/settings/connecteddevice/AdvancedConnectedDeviceDashboardFragment.java
index b58d9c3..e2d92c7 100644
--- a/src/com/android/settings/connecteddevice/AdvancedConnectedDeviceDashboardFragment.java
+++ b/src/com/android/settings/connecteddevice/AdvancedConnectedDeviceDashboardFragment.java
@@ -69,8 +69,12 @@
     public void onAttach(Context context) {
         super.onAttach(context);
         UwbPreferenceController uwbPreferenceController = use(UwbPreferenceController.class);
-        if (uwbPreferenceController != null && getSettingsLifecycle() != null) {
-            getSettingsLifecycle().addObserver(uwbPreferenceController);
+        // We only need the observer listen to the broadcast in the background for refreshing
+        // UI if the device supports UWB.
+        if (uwbPreferenceController != null && uwbPreferenceController.isUwbSupportedOnDevice()) {
+            if (getSettingsLifecycle() != null) {
+                getSettingsLifecycle().addObserver(uwbPreferenceController);
+            }
         }
     }
 
diff --git a/src/com/android/settings/uwb/UwbPreferenceController.java b/src/com/android/settings/uwb/UwbPreferenceController.java
index ad040ed..fb0836d 100644
--- a/src/com/android/settings/uwb/UwbPreferenceController.java
+++ b/src/com/android/settings/uwb/UwbPreferenceController.java
@@ -75,8 +75,7 @@
         };
     }
 
-    @VisibleForTesting
-    boolean isUwbSupportedOnDevice() {
+    public boolean isUwbSupportedOnDevice() {
         return mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_UWB);
     }
 
@@ -99,6 +98,9 @@
 
     @Override
     public boolean isChecked() {
+        if (!isUwbSupportedOnDevice()) {
+            return false;
+        }
         int state = mUwbManager.getAdapterState();
         return state == STATE_ENABLED_ACTIVE || state == STATE_ENABLED_INACTIVE;
     }