81

Androidモバイルは実際にはそれがどこにあるかをよく知っていますが、国コードや国名などで国を取得する方法はありますか?

GPSの正確な位置を知る必要はありません。国コードまたは名前で十分です。私は次のコードを使用しています。

 String locale = context.getResources().getConfiguration().locale.getCountry(Locale.getDefault());
 System.out.println("country = "+locale);

コード「US」が表示されますが、デバイスはインドに保管されています。GPSやネットワークプロバイダーを使用せずに、デバイスの現在の国コードを見つける方法はありますか?

タブレットを使っているからです。

4

10 に答える 10

103

に何も渡してはいけませんgetCountry()。削除Locale.getDefault()

String locale = context.getResources().getConfiguration().locale.getCountry();
于 2012-07-02T12:28:31.997 に答える
102

このコードを使用するだけで、

TelephonyManager tm = (TelephonyManager)this.getSystemService(Context.TELEPHONY_SERVICE);
String countryCodeValue = tm.getNetworkCountryIso();

現在接続されているネットワークが米国にある場合、これは「US」を返します。これはSIMカードがなくても機能します。

于 2014-10-14T08:31:39.583 に答える
14

チェックされた回答には非推奨のコードがあります。これを実装する必要があります:

String locale;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
    locale = context.getResources().getConfiguration().getLocales().get(0).getCountry();
} else {
    locale = context.getResources().getConfiguration().locale.getCountry();
}
于 2017-06-06T14:19:30.927 に答える