Fix NPE when querying AmbientDisply through ExternalSeting
Bug: 110403709
Test: manual
Change-Id: I5c037b010e296cbd011f8c141932e6befd341c99
diff --git a/src/com/android/settings/display/AmbientDisplayNotificationsPreferenceController.java b/src/com/android/settings/display/AmbientDisplayNotificationsPreferenceController.java
index cae5671..b3c1822 100644
--- a/src/com/android/settings/display/AmbientDisplayNotificationsPreferenceController.java
+++ b/src/com/android/settings/display/AmbientDisplayNotificationsPreferenceController.java
@@ -68,7 +68,7 @@
@Override
public boolean isChecked() {
- return mConfig.pulseOnNotificationEnabled(MY_USER);
+ return getAmbientConfig().pulseOnNotificationEnabled(MY_USER);
}
@Override
@@ -79,14 +79,20 @@
@Override
public int getAvailabilityStatus() {
- if (mConfig == null) {
- mConfig = new AmbientDisplayConfiguration(mContext);
- }
- return mConfig.pulseOnNotificationAvailable() ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
+ return getAmbientConfig().pulseOnNotificationAvailable()
+ ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
}
@Override
public boolean isSliceable() {
return TextUtils.equals(getPreferenceKey(), "ambient_display_notification");
}
+
+ private AmbientDisplayConfiguration getAmbientConfig() {
+ if (mConfig == null) {
+ mConfig = new AmbientDisplayConfiguration(mContext);
+ }
+
+ return mConfig;
+ }
}
diff --git a/src/com/android/settings/gestures/PickupGesturePreferenceController.java b/src/com/android/settings/gestures/PickupGesturePreferenceController.java
index 430361c..53a4447 100644
--- a/src/com/android/settings/gestures/PickupGesturePreferenceController.java
+++ b/src/com/android/settings/gestures/PickupGesturePreferenceController.java
@@ -62,17 +62,13 @@
@Override
public int getAvailabilityStatus() {
- if (mAmbientConfig == null) {
- mAmbientConfig = new AmbientDisplayConfiguration(mContext);
- }
-
// No hardware support for Pickup Gesture
- if (!mAmbientConfig.dozePulsePickupSensorAvailable()) {
+ if (!getAmbientConfig().dozePulsePickupSensorAvailable()) {
return UNSUPPORTED_ON_DEVICE;
}
// Can't change Pickup Gesture when AOD is enabled.
- if (!mAmbientConfig.ambientDisplayAvailable()) {
+ if (!getAmbientConfig().ambientDisplayAvailable()) {
return DISABLED_DEPENDENT_SETTING;
}
@@ -91,7 +87,7 @@
@Override
public boolean isChecked() {
- return mAmbientConfig.pulseOnPickupEnabled(mUserId);
+ return getAmbientConfig().pulseOnPickupEnabled(mUserId);
}
@Override
@@ -112,6 +108,14 @@
@VisibleForTesting
boolean pulseOnPickupCanBeModified() {
- return mAmbientConfig.pulseOnPickupCanBeModified(mUserId);
+ return getAmbientConfig().pulseOnPickupCanBeModified(mUserId);
+ }
+
+ private AmbientDisplayConfiguration getAmbientConfig() {
+ if (mAmbientConfig == null) {
+ mAmbientConfig = new AmbientDisplayConfiguration(mContext);
+ }
+
+ return mAmbientConfig;
}
}