首页 > 解决方案 > 获取与 Android 设置应用程序中类似的时区列表

问题描述

我已经尝试过,DateTimeZone.getAvailableIDs()但我得到了超过 500 个 TimeZone ids 和 TimeZone name ,但我想在我的列表中显示 TimeZone 和 name,这应该与我的设备(牛轧糖版本)在设置中显示相同。我的设备在设置列表中仅显示 88 个时区,我希望与我的应用程序中的设置列表相同。

getAvailableIDs()正在给出 Etc/GMT -5、Etc/GMT -6 等名称。这些名称会让用户感到困惑。

设置中的时区列表

使用 getAvailableIDs 方法的时区列表

标签: javaandroidtimezone

解决方案


设置中显示的时区可能取决于每个设备和制造商。它只是一个使用 Android ROM 编译的 XML,您无法从普通应用程序访问它(设置使用与 AOSP 集成的名为 SettingsLib 的库,但除非您使用 Android ROM 编译应用程序,否则您将无法访问它图书馆)。

这看起来很令人失望,但是,该文件在 Android 版本中并没有太大变化,您只需将其包含在您的项目中(在 中res/xml/timezones.xml),每个设备都有相同的列表。

这是适用于Android 7.1.2的文件,适用于Android 10(与 Android 7 相比,Android 10 仅多了 1 个城市)。

在这里,您可以看到 Android 如何使用此 XML 文件来获取 TimeZones (name + gmt)。


推荐阅读