diff --git a/services/core/java/com/android/server/timedetector/ServerFlags.java b/services/core/java/com/android/server/timedetector/ServerFlags.java index 417177fa903ef..773b5175c954b 100644 --- a/services/core/java/com/android/server/timedetector/ServerFlags.java +++ b/services/core/java/com/android/server/timedetector/ServerFlags.java @@ -278,11 +278,19 @@ public final class ServerFlags { */ @NonNull public Optional getOptionalStringArray(@DeviceConfigKey String key) { - Optional string = getOptionalString(key); - if (!string.isPresent()) { + Optional optionalString = getOptionalString(key); + if (!optionalString.isPresent()) { return Optional.empty(); } - return Optional.of(string.get().split(",")); + + // DeviceConfig appears to have no way to specify an empty string, so we use "_[]_" as a + // special value to mean a zero-length array. + String value = optionalString.get(); + if ("_[]_".equals(value)) { + return Optional.of(new String[0]); + } + + return Optional.of(value.split(",")); } /** diff --git a/services/core/java/com/android/server/timedetector/ServiceConfigAccessorImpl.java b/services/core/java/com/android/server/timedetector/ServiceConfigAccessorImpl.java index b161cc7204585..e4f3a80c03b5c 100644 --- a/services/core/java/com/android/server/timedetector/ServiceConfigAccessorImpl.java +++ b/services/core/java/com/android/server/timedetector/ServiceConfigAccessorImpl.java @@ -334,7 +334,7 @@ final class ServiceConfigAccessorImpl implements ServiceConfigAccessor { } int[] priorityInts = null; - if (priorityStrings != null && priorityStrings.length > 0) { + if (priorityStrings != null) { priorityInts = new int[priorityStrings.length]; try { for (int i = 0; i < priorityInts.length; i++) {