从安卓操作系统中检索国家/地区列表

2022-09-01 04:44:58

我正在寻找一种方法来填充微调器,其中包含带有其名称的国家/地区列表。我可以从安卓操作系统中检索它吗?有人可以给我举个例子吗?


答案 1

您可能会从区域设置类中获得一些想法。

调用 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 . . .

答案 2

您可以使用 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() 仅返回设备已安装的区域设置,这些区域设置很可能具有更少的不同国家/地区。


推荐