Получение кода страны - PullRequest
       7

Получение кода страны

5 голосов
/ 06 февраля 2012

У меня проблема с получением кода страны. Моя задача - узнать местоположение пользователя, выяснить, в какой он стране сейчас и получить код валюты этой страны. Вот код, который выбирает название страны и код страны из полученного местоположения:

Geocoder gc = new Geocoder(this);
List<Address> addresses = gc.getFromLocation(
                location.getLatitude(), location.getLongitude(), 5);

textView1.setText(addresses.get(0).getCountryName());
textView2.setText(addresses.get(0).getCountryCode());

Это прекрасно работает. Теперь я должен использовать класс java.util.Currency, чтобы получить объект Currency. Я могу использовать метод Currency.getInstance(Locale locale). Но в классе Locale нет конструктора, который позволял бы передавать в качестве аргумента только код страны. Означает, что я не могу создать Locale объект для страны. Как это можно решить? Заранее спасибо.

Ответы [ 4 ]

5 голосов
/ 06 февраля 2012

Вы можете использовать Currency.getInstance(new Locale("",code)) с возможным исключением, если код страны недействителен.

1 голос
/ 06 февраля 2012
String lang = Locale.getDefault().getDisplayLanguage();
Locale locale = new Locale(lang, COUNTRY_YOU_HAVE);
0 голосов
/ 05 декабря 2018

Имейте в виду, что результат этого будет неточным, поскольку у нас нет Language Code, или он может даже выдать исключение из-за отсутствия этого Locale в системе.Вместо этого я искал бы это, выполнив следующее:

val locale = Locale.getAvailableLocales().first { it.country == address.countryCode }
val currency = Currency.getInstance(locale)

Также, если вы хотите попытаться быть максимально точным, вы можете сделать это:

val locale =
    Locale.getAvailableLocales().firstOrNull { it.country.equals(countryCode, true) && it.language.equals(countryCode, true) }
        ?: Locale.getAvailableLocales().firstOrNull { it.country.equals(countryCode, true) }
        ?: Locale.getDefault()
val currency = Currency.getInstance(locale)
0 голосов
/ 06 февраля 2012

Почему бы вам не использовать объект Address для получения Locale, методом:

http://developer.android.com/reference/android/location/Address.html#getLocale%28%29

...