web-dev-qa-db-ja.com

国(またはそのISOコード)を取得する方法は?

国コードを取得する最良の方法は何ですか?今のところ、TelephonyManagerで取得する方法と、Androidで国コードを見つけるためのもう1つの最良かつユニークな方法であるLocaleで取得する方法の2つを知っています。

49
Vishal Pawar

IPアドレスで解決しました。電話のIPアドレスを取得できます。あなたがwifiを使用している場合、wifiホットスポットのIPアドレスまたはモバイルサービス提供サーバーのIPがありますので、そのIPからウェブサービスまたはそのIPアドレスの国を追跡するものに送信できますここにIPの国を示します。例は http://whatismyipaddress.com/ip-lookup です。

6
Vishal Pawar

これを試して、

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

これについては常に大規模な議論がありますが、開発者や企業が複雑な方法を採用する理由を理解することはできません。ユーザーが選択した言語とは、ユーザーが自分の電話で常に表示したい言語を意味します。彼らは、他の言語やシステムとは異なる言語のアプリを持つつもりはありません。

選択は非常に簡単です:ロケールを使用する(言語を取得するにはユーザーが優先として選択されています)、または彼らが既に望まない言語で情報を表示するために最善を尽くします物事を見るために。

国コードを取得するには:

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

getSimCountryIsobecause getSimCountryIsoはSIMで国isoを書き込むためにオペレーターに依存するため、CDMAネットワークもサポートするため、より良いです。

13
Asaf Pinhassi

このコードを使用してISO2を取得できます:Locale.getDefault().getCountry()

そして、これはISO3を取得します:Locale.getDefault().getISO3Country()

お役に立てれば

7
Bach Vu

IPが最善の方法だと思います

あなたがそれをするなら

    Locale.getDefault().getCountry();,

ユーザーが国を選択した国がありますので、イングランドを選択できます。スペインにいれば、彼がお母さんのどこにいるかを知る必要があるかもしれません

例:あなたのアプリはイギリスでのみ何かを購入できると想像してください。ユーザーはスペインから来ていますが、彼はイギリスで休暇をとっており、彼はあなたの製品を購入したいと思っています...

    Locale.getDefault().getCountry(); 

そのユーザーはあなたの製品を購入することはできませんので、IPは私が思う最高の方法です

6
D4rWiNS

Reto Meierによる素晴らしい記事があります: http://Android-developers.blogspot.com/2011/06/deep-dive-into-location.html

ソースコードを含むAndroidデバイスの場所を取得するためのさまざまなテクニックについて説明します。次に、場所がある場合、国を取得するのは簡単です-オンラインで使用できます web- service または オフラインデータベース

4
HitOdessit

私はそれが非常に古い質問であることを知っていますが、これはいくつかの開発者を助けると思います:

GPSとGoogleサービス(中国)がない国を見つけるのは非常に困難です。お使いの携帯電話にSIMがない場合、TelephonyManagerは機能しません。

また、中国のユーザーが言語を英語に設定すると、Localeは機能しません(取得する国は米国または英国になります)。

アプリがインターネット接続を必要とする場合、オプションがあります。 ip-api と呼ばれるこのAPIを使用できます。これを使用してください documentation 最初にこれを使用する場合

このような他のAPIがあります freegeoip api

2
sunil sunny