国コードを取得する最良の方法は何ですか?今のところ、TelephonyManagerで取得する方法と、Androidで国コードを見つけるためのもう1つの最良かつユニークな方法であるLocaleで取得する方法の2つを知っています。
IPアドレスで解決しました。電話のIPアドレスを取得できます。あなたがwifiを使用している場合、wifiホットスポットのIPアドレスまたはモバイルサービス提供サーバーのIPがありますので、そのIPからウェブサービスまたはそのIPアドレスの国を追跡するものに送信できますここにIPの国を示します。例は http://whatismyipaddress.com/ip-lookup です。
これを試して、
TelephonyManager tm = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
String countryCode = tm.getSimCountryIso();
これについては常に大規模な議論がありますが、開発者や企業が複雑な方法を採用する理由を理解することはできません。ユーザーが選択した言語とは、ユーザーが自分の電話で常に表示したい言語を意味します。彼らは、他の言語やシステムとは異なる言語のアプリを持つつもりはありません。
選択は非常に簡単です:ロケールを使用する(言語を取得するにはユーザーが優先として選択されています)、または彼らが既に望まない言語で情報を表示するために最善を尽くします物事を見るために。
国コードを取得するには:
Locale.getDefault().getCountry();
TelephonyManager tm = (TelephonyManager)getSystemService(getApplicationContext().TELEPHONY_SERVICE);
String countryCode = tm.getNetworkCountryIso();
getSimCountryIso
because getSimCountryIso
はSIMで国isoを書き込むためにオペレーターに依存するため、CDMAネットワークもサポートするため、より良いです。
このコードを使用してISO2を取得できます:Locale.getDefault().getCountry()
そして、これはISO3を取得します:Locale.getDefault().getISO3Country()
お役に立てれば
IPが最善の方法だと思います
あなたがそれをするなら
Locale.getDefault().getCountry();,
ユーザーが国を選択した国がありますので、イングランドを選択できます。スペインにいれば、彼がお母さんのどこにいるかを知る必要があるかもしれません
例:あなたのアプリはイギリスでのみ何かを購入できると想像してください。ユーザーはスペインから来ていますが、彼はイギリスで休暇をとっており、彼はあなたの製品を購入したいと思っています...
Locale.getDefault().getCountry();
そのユーザーはあなたの製品を購入することはできませんので、IPは私が思う最高の方法です
Reto Meierによる素晴らしい記事があります: http://Android-developers.blogspot.com/2011/06/deep-dive-into-location.html
ソースコードを含むAndroidデバイスの場所を取得するためのさまざまなテクニックについて説明します。次に、場所がある場合、国を取得するのは簡単です-オンラインで使用できます web- service または オフラインデータベース
私はそれが非常に古い質問であることを知っていますが、これはいくつかの開発者を助けると思います:
GPSとGoogleサービス(中国)がない国を見つけるのは非常に困難です。お使いの携帯電話にSIMがない場合、TelephonyManager
は機能しません。
また、中国のユーザーが言語を英語に設定すると、Locale
は機能しません(取得する国は米国または英国になります)。
アプリがインターネット接続を必要とする場合、オプションがあります。 ip-api と呼ばれるこのAPIを使用できます。これを使用してください documentation 最初にこれを使用する場合
このような他のAPIがあります freegeoip api