有没有办法从Android设备获取系统安装的区域设置。我尝试使用来自android Get Available locales的getAvailableLocales ()
,但它不适用于Asus,Carbon,Lava,Intex等设备。
例如,如果我在Nexus设备中拨打getAvailableLocales()
,我就可以获得Settings-> Language&Input -> Language
但如果我在任何Carbon设备上执行相同操作,而不是从Settings-> Language&Input -> Language
获取语言,我会得到一个不同的列表。
我只想要设备中已安装的语言列表,而不是操作系统支持的所有语言。
答案 0 :(得分:5)
Locale.getAvailableLocales()
方法是一组通用的“基础”语言环境。来自文档:
大多数区域设置敏感的类提供了自己的
getAvailableLocales
方法,应优先于此通用方法。
强调我的。
通过查询相应类的getAvailableLocales()
方法,可以获得特定用例的语言环境。具体做法是:
答案 1 :(得分:3)
如果您需要系统支持的区域设置,请使用
Locale.getAvailableLocales()
如果您需要系统支持和设备启用的语言环境
Resources.getSystem().getAssets().getLocales()
通过使用第一个,您无法确定该设备是否支持所有区域设置。因为他们都带着那个Android ROM。
但后者总是肯定的。 因为它只提供为该特定设备安装的所有语言环境(字体)。这些区域设置(字体)由该设备制造商放置。
我在here
中解释了更多