Получите тот же список часовых поясов, что и в приложении Android Настройки - PullRequest
1 голос
/ 28 апреля 2020

Я пробовал с DateTimeZone.getAvailableIDs(), но я получаю более 500 идентификаторов TimeZone и имя TimeZone, но я хочу показать TimeZone и имя в моем списке, которые должны читаться так же, как показывает мое устройство (версия Nougat) в настройках. Мое устройство показывает только 88 часовых поясов в списке настроек, я хочу, чтобы в моем приложении было то же самое.

getAvailableIDs() дает имена, такие как Etc / GMT -5, Etc / GMT -6 и c. Это будет сбивать с толку пользователей.

Timezone list in settings

Timezone list using getAvailableIDs method

1 Ответ

0 голосов
/ 29 апреля 2020

Часовые пояса, показанные в настройках, могут зависеть от каждого устройства и производителя. Это просто XML, скомпилированный с ПЗУ Android, вы не можете получить к нему доступ из обычного приложения (Настройки используют библиотеку, интегрированную с AOSP под названием SettingsLib, но если вы не компилируете свое приложение с ПЗУ Android, вы выиграли У меня нет доступа к этой библиотеке).

Это может выглядеть довольно разочаровывающе, однако, эти файлы не сильно меняются в версиях Android, и вы можете просто включить их в свой проект (в res/xml/timezones.xml ), имея одинаковый список для каждого устройства.

Это файл для Android 7.1.2 , а для Android 10 (Android 10 получил только на 1 город больше, чем Android 7).

Здесь вы можете увидеть, как Android использует этот файл XML для получения часовых поясов (name + gmt ).

...