如何得到用户的国家?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (14)

一个android手机确实知道它在哪里 - 但是有没有一种通过类似代码的方式来检索国家的方法?

不需要知道GPS的确切位置 - 知道国家就足够了

我首先想到了使用时区,但实际上我需要更多的信息,因为如果位置是纽约或利马它会有所不同。

提问于
用户回答回答于

这将得到country code

 String locale = context.getResources().getConfiguration().locale.getCountry(); 

也可以用getISO3Country()替换getCountry()来获取国家的3个字母的ISO代码。这将得到国名

 String locale = context.getResources().getConfiguration().locale.getDisplayCountry();

用户回答回答于
/**
 * Get ISO 3166-1 alpha-2 country code for this device (or null if not available)
 * @param context Context reference to get the TelephonyManager instance from
 * @return country code or null
 */
public static String getUserCountry(Context context) {
    try {
        final TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
        final String simCountry = tm.getSimCountryIso();
        if (simCountry != null && simCountry.length() == 2) { // SIM country code is available
            return simCountry.toLowerCase(Locale.US);
        }
        else if (tm.getPhoneType() != TelephonyManager.PHONE_TYPE_CDMA) { // device is not 3G (would be unreliable)
            String networkCountry = tm.getNetworkCountryIso();
            if (networkCountry != null && networkCountry.length() == 2) { // network country code is available
                return networkCountry.toLowerCase(Locale.US);
            }
        }
    }
    catch (Exception e) { }
    return null;
}

扫码关注云+社区