从安卓操作系统中检索国家/地区列表
我正在寻找一种方法来填充微调器,其中包含带有其名称的国家/地区列表。我可以从安卓操作系统中检索它吗?有人可以给我举个例子吗?
我正在寻找一种方法来填充微调器,其中包含带有其名称的国家/地区列表。我可以从安卓操作系统中检索它吗?有人可以给我举个例子吗?
您可能会从区域
设置类中获得一些想法。
调用 getAvailableLocales()
然后迭代数组 & getDisplayCountry()。
。如果这是您第一次看到该国家/地区名称,请将其添加到可展开的列表(例如实例)中。ArrayList
在Java中,但是来自的3个类都可以在Android中使用。java.util
import java.util.*;
class Countries {
public static void main(String[] args) {
Locale[] locales = Locale.getAvailableLocales();
ArrayList<String> countries = new ArrayList<String>();
for (Locale locale : locales) {
String country = locale.getDisplayCountry();
if (country.trim().length()>0 && !countries.contains(country)) {
countries.add(country);
}
}
Collections.sort(countries);
for (String country : countries) {
System.out.println(country);
}
System.out.println( "# countries found: " + countries.size());
}
}
Albania
Algeria
Argentina
Australia
..
Venezuela
Vietnam
Yemen
# countries found: 95
Press any key to continue . . .
您可以使用 Locale.getISOCountries() 获取所有两个字母的国家/地区代码的列表。从两个字母的国家/地区代码中,您可以构造一个 Locale 对象,然后使用 Locale.getDisplayName() 来获取国家/地区名称。
String[] isoCountryCodes = Locale.getISOCountries();
for (String countryCode : isoCountryCodes) {
Locale locale = new Locale("", countryCode);
String countryName = locale.getDisplayCountry();
}
在Galaxy Note 3上运行Android 4.3,getISOCountries()返回246个国家代码,这与截至今天(11/24/14)官方分配的249个国家/地区代码非常接近。
调用 getAvailableLocales() 仅返回设备已安装的区域设置,这些区域设置很可能具有更少的不同国家/地区。