Ich müsste den vollständigen Ländernamen aus der Ländervorwahl erhalten. Zum Beispiel für die Niederlande bräuchte ich the Netherlands
aus dem Ländercode NL
.
Ich dachte, ich könnte das mit machen Locale
wie:
Locale loc = new Locale("NL");
loc.getCountry();
Aber loc.getCountry();
ist leer.
Wie kann ich das machen?
Versuchen Sie es so
Locale loc = new Locale("","NL");
loc.getDisplayCountry();
Das sollte funktionieren:
Locale l = new Locale("", "NL");
String country = l.getDisplayCountry();
Der erste Parameter von Locale ist die Sprache, die in Ihrem Fall nicht nützlich ist.
Ich möchte den obigen Antworten weitere Informationen hinzufügen.
Wenn Sie die Sprache für Ergebnisse angeben möchten, können Sie verwenden Locale("your language")
als Parameter von getDisplayCountry()
.
Zum Beispiel:
(new Locale("","NL")).getDisplayCountry(new Locale("ZH"));
„ZH“ ist der Sprachcode des Chinesischen. Sie erhalten “荷兰”, was der chinesische Name der Niederlande ist.
Und Sie können verwenden Locale("languages", "ISO-3166 code")
um Ihre Sprachvariante anzugeben.
Zum Beispiel:
(new Locale("","NL")).getDisplayCountry(new Locale("ZH", "TW"));
Locale("ZH", "TW")
bedeutet in Taiwan die Variante des Chinesischen (traditionelles Chinesisch). Es hat viele Unterschiede zur chinesischen Festlandvariante.
Sie erhalten “荷蘭”, den traditionellen chinesischen Namen der Niederlande.
(Auch wenn Sie kein Chinesisch verstehen, ich denke, es ist offensichtlich, dass das zweite chinesische Zeichen in den beiden Namen unterschiedlich ist.)
Wenn Sie keine Sprache angeben, erhalten Sie den Namen Niederlande in der Anzeigesprache des Geräts, die in den Telefoneinstellungen geändert werden kann. Der Code lautet:
(new Locale("","NL")).getDisplayCountry();
Eine Liste aller von Android unterstützten Sprachen und Varianten erhalten Sie in dieser Frage:
Wenn Sie Kotlin verwenden:
Locale("", "NL").getDisplayCountry(Locale("ZH"))
Locale("", "NL").getDisplayCountry(Locale("ZH", "TW"))
Locale("", "NL").displayCountry
Versuchen Sie, den anderen Konstruktor zu verwenden
Locale loc = new Locale("NL", "The Netherlands");
Gebietsschema
Es scheint kein vordefiniertes Gebietsschema für zu geben The Netherlands
für eine vollständige Lösung TelephonyManager (aus dieser Lösung):
TelephonyManager teleMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
String localeCountry = teleMgr.getNetworkCountryIso();
if (localeCountry != null) {
Locale loc = new Locale("",localeCountry);
Log.d(TAG, "User is from " + loc);
}
Sie können die Ländercode-ISO vom Gerät erhalten, überprüfen Sie dies getNetworkCountryIso()
– Junid
11. Januar 2013 um 10:14 Uhr
Ich bin mir nicht sicher, aber Sie können loc.getDisplayCountry() verwenden
– MysticMagicϡ
11. Januar 2013 um 10:17 Uhr
@ShreyaShah genau, es funktioniert so!
– Nolomann
11. Januar 2013 um 10:21 Uhr