Fix NPE crash in UwbPreferenceController and optimize the lifecycle observer adding condition in page
This patch contains two fixes: - Make sure mUwbManager is non-null by calling isUwbSupportedOnDevice to avoid a NPE. - Modify AdvancedConnectedDeviceDashboardFragment, add lifecycle observer only if device supports UWB. Bug: 244871579 Test: manual test and Robotest. Change-Id: I78f97794a66f3fb487f067c4570899e21c254acf
This commit is contained in:
@@ -69,10 +69,14 @@ public class AdvancedConnectedDeviceDashboardFragment extends DashboardFragment
|
|||||||
public void onAttach(Context context) {
|
public void onAttach(Context context) {
|
||||||
super.onAttach(context);
|
super.onAttach(context);
|
||||||
UwbPreferenceController uwbPreferenceController = use(UwbPreferenceController.class);
|
UwbPreferenceController uwbPreferenceController = use(UwbPreferenceController.class);
|
||||||
if (uwbPreferenceController != null && getSettingsLifecycle() != null) {
|
// 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);
|
getSettingsLifecycle().addObserver(uwbPreferenceController);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
|
protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
|
||||||
|
@@ -75,8 +75,7 @@ public class UwbPreferenceController extends TogglePreferenceController implemen
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@VisibleForTesting
|
public boolean isUwbSupportedOnDevice() {
|
||||||
boolean isUwbSupportedOnDevice() {
|
|
||||||
return mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_UWB);
|
return mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_UWB);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -99,6 +98,9 @@ public class UwbPreferenceController extends TogglePreferenceController implemen
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isChecked() {
|
public boolean isChecked() {
|
||||||
|
if (!isUwbSupportedOnDevice()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
int state = mUwbManager.getAdapterState();
|
int state = mUwbManager.getAdapterState();
|
||||||
return state == STATE_ENABLED_ACTIVE || state == STATE_ENABLED_INACTIVE;
|
return state == STATE_ENABLED_ACTIVE || state == STATE_ENABLED_INACTIVE;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user