Android如何获取系统的已安装区域设置

时间:2016-02-23 13:47:45

标签: android locale

有没有办法从Android设备获取系统安装的区域设置。我尝试使用来自android Get Available localesgetAvailableLocales (),但它不适用于Asus,Carbon,Lava,Intex等设备。

例如,如果我在Nexus设备中拨打getAvailableLocales(),我就可以获得Settings-> Language&Input -> Language

中的区域设置

但如果我在任何Carbon设备上执行相同操作,而不是从Settings-> Language&Input -> Language获取语言,我会得到一个不同的列表。

我只想要设备中已安装的语言列表,而不是操作系统支持的所有语言。

2 个答案:

答案 0 :(得分:5)

Locale.getAvailableLocales()方法是一组通用的“基础”语言环境。来自文档:

  

大多数区域设置敏感的类提供了自己的getAvailableLocales方法,应优先于此通用方法

强调我的。

通过查询相应类的getAvailableLocales()方法,可以获得特定用例的语言环境。具体做法是:

答案 1 :(得分:3)

如果您需要系统支持的区域设置,请使用

Locale.getAvailableLocales() 

如果您需要系统支持和设备启用的语言环境

Resources.getSystem().getAssets().getLocales()

通过使用第一个,您无法确定该设备是否支持所有区域设置。因为他们都带着那个Android ROM。

但后者总是肯定的。 因为它只提供为该特定设备安装的所有语言环境(字体)。这些区域设置(字体)由该设备制造商放置。

我在here

中解释了更多