Wie bekomme ich das Land (oder seinen ISO-Code)? [duplicate]
Lesezeit: 5 Minuten
Vishal Pawar
Was ist der beste Weg, um die Ländervorwahl zu bekommen?
Bisher kenne ich zwei Wege. Eine ist von TelephonyManager und eine andere von Locale zu bekommen. Was ist eine weitere beste und einzigartige Möglichkeit, den Ländercode auf Android zu finden?
Darüber gibt es immer wieder große Diskussionen, und ich verstehe nie, warum Entwickler und Unternehmen den komplexen Weg gehen. Die vom Benutzer ausgewählte Sprache bedeutet die Sprache, die er/sie immer auf seinem/ihrem Telefon sehen möchte. Sie beabsichtigen nicht, Apps in einer anderen Sprache als andere oder das System zu haben.
Die Auswahl ist sehr einfach: Verwenden Sie Locale (um die Sprache zu erhalten der Benutzer als bevorzugt ausgewählt), oder tun Sie Ihr Bestes, um sie zu verärgern, indem Sie ihnen Informationen in einer Sprache zeigen, in der sie bereits gesagt haben, dass sie die Dinge nicht sehen möchten.
Um den Ländercode zu erhalten, verwenden Sie:
Locale.getDefault().getCountry();
Ich habe bereits in Frage gestellt, dass ich es von Locale bekommen kann. Ich wollte einen anderen einzigartigen Weg, wie ich es bekommen habe, und habe meine Antwort gepostet
– Vishal Pawar
10. September 2012 um 6:29 Uhr
In Indien gibt es beispielsweise keine Möglichkeit, Hindi als Telefonsprache auszuwählen, da es auf der Android-ROM nicht vorhanden ist. Die meisten Menschen in Indien sind gezwungen, ein anderes Gebietsschema zu wählen, z. B. Englisch (UK). In diesem Fall wird Ihr Code beschädigt. Darüber hinaus haben sich die Leute in einigen Ländern dafür entschieden, alles auf Englisch zu sehen, da die Lokalisierung andere Probleme hat (hauptsächlich Sprachen von rechts nach links). Das ist ein weiteres Szenario, das Ihren Code bricht.
– Kerl
17. Juni 2013 um 13:11 Uhr
Das wird in vielen Ländern nicht funktionieren! (Ich denke, dass es als EN uns fest codiert ist). Das erklärt, warum es einige Apps gibt, um das Gebietsschema zu ändern (etwas, das ein durchschnittlicher Benutzer niemals installieren würde).
– DNax
7. November 2013 um 16:03 Uhr
Verwendbarkeit dieser Lösung: 0. Ich lebe in Spanien, aber ich möchte, dass mein Telefon auf Englisch läuft, also wähle ich ENGLISH als Gebietsschema. Damit ergibt Locale.getDefault().getCountry() USA, nicht Spanien. Diese Lösung liefert Ergebnisse, die nicht real sind.
– Korbella
16. Januar 2015 um 8:22 Uhr
@JoseLUgia Zusätzlich zu den Punkten, die andere gemacht haben, ist Ihre Antwort nur gültig, wenn der Zweck der Bestimmung des Landes darin besteht, die Benutzeroberfläche in der entsprechenden Sprache zu lokalisieren. Es gibt andere Gründe für die Bestimmung des Landes, wie z. B. die Lizenzierung. Oder sagen wir, ich habe eine App, mit der Sie in Investmentfonds in Indien investieren können. Es ist mir egal, welche Sprache Sie bevorzugen, aber wenn Sie nicht in Indien sind, möchte ich Sie vielleicht warnen, dass Sie mit der App nur in indische Investmentfonds investieren können. Das aus dem Gebietsschema ermittelte Land ist also nicht immer richtig.
Es ist besser als getSimCountryIso Weil getSimCountryIso Es hängt vom Betreiber ab, das Länder-ISO in die SIM-Karte zu brennen, und es unterstützt auch CDMA-Netzwerke.
Dies funktioniert, aber was ist, wenn der Benutzer ein reines WLAN-Gerät verwendet || keine sim karte eingelegt?Locale.getDefault().getCountry() funktioniert nicht für viele Leute, die ihre Standardsprache auf Englisch eingestellt haben. Ich könnte in Indien sein, wir setzen normalerweise das Gebietsschema des Geräts auf en-GB, die Abfrage des Landes gibt jetzt GB zurück.
– Irshu
2. Mai 2018 um 8:59 Uhr
Bach Vu
Sie können diesen Code verwenden, um zu erhalten ISO 2:
Ich denke, die IP-Adresse ist der beste Weg, weil sie Ihnen das Land gibt, in dem sich das Telefon gerade befindet.
Wenn Sie es durch tun
Locale.getDefault().getCountry();
Sie erhalten das Land, in dem der Benutzer das Land ausgewählt hat, also können Sie England ausgewählt haben, und Sie können in Spanien sein und vielleicht müssen Sie wissen, wo er/sie sich gerade befindet.
Beispiel: Stellen Sie sich vor, dass Ihre App etwas kaufen kann nur in England. Der Benutzer kommt aus Spanien, ist aber im Urlaub in England und möchte Ihr Produkt kaufen … falls Sie es verwenden
Locale.getDefault().getCountry();
Dieser Benutzer kann Ihr Produkt nicht kaufen, daher ist die IP-Adresse meiner Meinung nach der beste Weg.
Vishal Pawar
Ich habe es per IP-Adresse gelöst. Sie können die IP-Adresse Ihres Telefons abrufen. Wenn Sie Wi-Fi verwenden, ist dies die IP-Adresse des Wi-Fi Hotspot oder IP-Adresse des Servers Ihres Mobilfunkanbieters, sodass Sie von dieser IP-Adresse an einen Webdienst oder etwas anderes senden können, um das Land dieser IP-Adresse zu verfolgen.
Im Internet sind einige Quellen (Datenbanken) verfügbar, die das Land der IP-Adresse angeben.
Es beschreibt verschiedene Techniken, um den Standort eines Android-Geräts zu ermitteln, einschließlich des Quellcodes.
Als nächstes, wenn Sie den Standort haben, ist es einfach, das Land dafür zu bekommen – Sie können einen Online-Webservice oder eine Offline-Datenbank verwenden.
Peter Mortensen
Es ist sehr schwer, das Land ohne GPS und Google Services (China) zu finden. TelephonyManager funktioniert nicht, wenn sich keine SIM-Karte in Ihrem Telefon befindet.
Und Locale funktioniert nicht, wenn ein Benutzer in China seine Sprache auf Englisch eingestellt hat (das Land, das Sie erhalten, ist US oder UK).
Wenn Ihre App eine Internetverbindung erfordert, gibt es eine Option. Sie könnten diese API namens verwenden ip-api. Bitte gehen Sie durch ihre Dokumentation zuerst, wenn Sie vorhaben, dies zu verwenden.