java - 获取与 Android 设置应用程序中类似的时区列表
问题描述
我已经尝试过,DateTimeZone.getAvailableIDs()
但我得到了超过 500 个 TimeZone ids 和 TimeZone name ,但我想在我的列表中显示 TimeZone 和 name,这应该与我的设备(牛轧糖版本)在设置中显示相同。我的设备在设置列表中仅显示 88 个时区,我希望与我的应用程序中的设置列表相同。
getAvailableIDs()
正在给出 Etc/GMT -5、Etc/GMT -6 等名称。这些名称会让用户感到困惑。
解决方案
设置中显示的时区可能取决于每个设备和制造商。它只是一个使用 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)。
推荐阅读
- asp.net-mvc - 如何将参数传递给 RedirectToAction 到另一个 Action?
- azure - 两个 Azure 虚拟机规模集 (VMSS) 之间的负载平衡
- python - PyQt5 QGraphicsSimpleTextItem Y 位置
- c# - Asp .NET Core SignalR 显示服务器时间
- c++ - 为什么在编译 x86_64 时 int 被视为 32 位值
- javascript - 如何修改此脚本以使其在页面首次加载和更改时工作?
- python - 如何将嵌套字典写入 CSV 文件?
- python - Pythonic(OO)根据对象类型选择类方法的方式
- javascript - 如何使单击功能仅适用于您单击的对象的类
- javascript - 将结果从嵌套的 .then 返回到另一个函数