web-dev-qa-db-fra.com

Comment obtenir le pays (ou son code ISO)?

Quelle est la meilleure façon d'obtenir le code du pays? Pour l'instant, je connais deux façons d'obtenir une TelephonyManager et une autre par Locale qui est l'autre meilleure et unique façon de trouver le code du pays dans Android.

49
Vishal Pawar

Je l'ai résolu par l'adresse IP. Vous pouvez obtenir l'adresse IP de votre téléphone. Si vous utilisez le wifi, il s'agira de l'adresse IP du hotspot wifi ou de l'IP de votre serveur de service mobile.Par conséquent, à partir de cette IP, vous pouvez envoyer au service Web ou quelque chose pour suivre le pays de cette adresse IP.Il existe des sources (base de données) disponibles si Internet qui fournit le pays de l'IP ici est l'exemple http://whatismyipaddress.com/ip-lookup .

6
Vishal Pawar

Essaye ça,

TelephonyManager tm = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
      String countryCode = tm.getSimCountryIso();
79
Sahil Mahajan Mj

Il y a toujours d'énormes discussions à ce sujet, et je ne comprends jamais pourquoi les développeurs et les entreprises optent pour la voie complexe. La langue sélectionnée par l'utilisateur, signifie la langue qu'il souhaite voir toujours dans son téléphone. Ils n'ont pas l'intention d'avoir des applications dans une langue différente des autres ou du système.

Le choix est très simple: utilisez Locale (pour obtenir la langue l'utilisateur sélectionné comme préféré), ou faites de votre mieux pour les énerver en leur montrant des informations dans une langue qu'ils ont déjà dit ne pas vouloir pour voir les choses.

Pour obtenir le code du pays, utilisez:

Locale.getDefault().getCountry();
32
Jose L Ugia
            TelephonyManager tm = (TelephonyManager)getSystemService(getApplicationContext().TELEPHONY_SERVICE);
          String countryCode = tm.getNetworkCountryIso();

C'est mieux que getSimCountryIso car getSimCountryIso dépend de l'opérateur pour graver l'iso du pays sur la carte SIM et il prend également en charge les réseaux CDMA.

13
Asaf Pinhassi

Vous pouvez utiliser ce code pour obtenir ISO2: Locale.getDefault().getCountry()

Et cela pour obtenir ISO3: Locale.getDefault().getISO3Country()

J'espère que cela t'aides

7
Bach Vu

Je pense que l'ip est le meilleur moyen car il vous donnera le pays où le téléphone est au moment,

Si vous le faites par

    Locale.getDefault().getCountry();,

vous avez le pays où l'utilisateur sélectionne le pays afin que vous puissiez avoir sélectionné l'Angleterre, et vous pouvez être en Espagne et peut-être avez-vous besoin de savoir où est-il au moment

Exemple: imaginez que votre application puisse acheter quelque chose UNIQUEMENT en Angleterre, l'utilisateur est d'Espagne mais il est en vacances en Angleterre et il veut acheter votre produit ... si vous utilisez

    Locale.getDefault().getCountry(); 

cet utilisateur ne pourra pas acheter votre produit, donc l'ip est la meilleure façon je pense

6
D4rWiNS

Il y a un excellent article de Reto Meier: http://Android-developers.blogspot.com/2011/06/deep-dive-into-location.html

Il décrit différentes techniques pour obtenir l'emplacement d'un appareil Android, y compris le code source. Ensuite, lorsque vous avez l'emplacement, il est facile d'obtenir le pays pour cela - l'utilisation peut être utilisée en ligne web- service ou base de données hors ligne

4
HitOdessit

Je sais que c'est une très vieille question mais je pense que cela aidera certains développeurs:

Il est très difficile de trouver le pays sans GPS et services Google (Chine). TelephonyManager ne fonctionnera pas s'il n'y a pas de carte SIM dans votre téléphone.

Et Locale ne fonctionnera pas si un utilisateur en Chine définit sa langue comme l'anglais (le pays que vous obtiendrez sera les États-Unis ou le Royaume-Uni).

Si votre application nécessite une connexion Internet, il existe une option. Vous pouvez utiliser cette API appelée ip-api . Veuillez passer par là documentation d'abord si vous prévoyez d'utiliser ceci

Il existe d'autres API comme celle-ci freegeoip api

2
sunil sunny