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