From eabff5da92edea29519f6902aa853efc001a2e19 Mon Sep 17 00:00:00 2001 From: Neil Fuller Date: Wed, 29 Apr 2020 10:22:31 +0100 Subject: Fix missing zone strings in some cases ICU's TimeZoneNames requires a "canonical" zone ID, otherwise it will return no data. Usually the ID being used is the same as the canonical ID so there's no problem. This change is based on an equivalent fix in the newer SettingsUI code. It is for completeness, to ensure incorrect code is not copied in future. Bug: 155167041 Test: None Change-Id: I2becbebb0213c4aa60031178a760ee12bfb7d295 --- .../src/com/android/settingslib/datetime/ZoneGetter.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/packages/SettingsLib/src/com/android/settingslib/datetime/ZoneGetter.java b/packages/SettingsLib/src/com/android/settingslib/datetime/ZoneGetter.java index d48aa246ecba..231809bfece4 100644 --- a/packages/SettingsLib/src/com/android/settingslib/datetime/ZoneGetter.java +++ b/packages/SettingsLib/src/com/android/settingslib/datetime/ZoneGetter.java @@ -242,7 +242,16 @@ public class ZoneGetter { final TimeZoneNames.NameType nameType = tz.inDaylightTime(now) ? TimeZoneNames.NameType.LONG_DAYLIGHT : TimeZoneNames.NameType.LONG_STANDARD; - return names.getDisplayName(tz.getID(), nameType, now.getTime()); + return names.getDisplayName(getCanonicalZoneId(tz), nameType, now.getTime()); + } + + private static String getCanonicalZoneId(TimeZone timeZone) { + final String id = timeZone.getID(); + final String canonicalId = android.icu.util.TimeZone.getCanonicalID(id); + if (canonicalId != null) { + return canonicalId; + } + return id; } private static void appendWithTtsSpan(SpannableStringBuilder builder, CharSequence content, -- cgit v1.2.3-59-g8ed1b