如何获得国家(或其ISO代码)?

时间:2012-08-31 07:25:08

标签: android location country-codes

获取国家/地区代码的最佳方式是什么?到目前为止,我知道两种方法是通过TelephonyManager获取,另一种方法是通过Locale获得,这是另一种最好的方式。在android中查找国家/地区代码的独特方式。

8 个答案:

答案 0 :(得分:79)

试试这个,

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

答案 1 :(得分:31)

关于这一点总是有很多讨论,我永远不会理解为什么开发人员和公司会采用复杂的方式。 用户选择的语言表示他/她希望始终在他/她的电话中看到的语言。他们不打算使用与其他语言或系统不同的语言提供应用程序。

选择非常简单:使用区域设置(将语言用户选择为首选),或者尽最大努力向他们发送信息,以他们已经说过的语言向他们展示信息我不想看到的东西。

要使用国家/地区代码:

Locale.getDefault().getCountry();

答案 2 :(得分:13)

            TelephonyManager tm = (TelephonyManager)getSystemService(getApplicationContext().TELEPHONY_SERVICE);
          String countryCode = tm.getNetworkCountryIso();

优于getSimCountryIso,因为getSimCountryIso取决于运营商在SIM上刻录国家/地区iso,它还支持CDMA网络。

答案 3 :(得分:7)

您可以使用此代码获取ISO2: Locale.getDefault().getCountry()

这是为了获得ISO3: Locale.getDefault().getISO3Country()

希望这有帮助

答案 4 :(得分:6)

我通过IP地址解决了它。您可以获取手机的IP地址。如果您正在使用wifi,那么它将是您的移动服务提供服务器的wifi热点或IP的IP地址,因此从该IP您可以发送到Web服务或跟踪该IP地址的国家/地区有一些来源(数据库)可用互联网这里提供IP的国家是示例http://whatismyipaddress.com/ip-lookup

答案 5 :(得分:6)

我认为ip是最好的方式,因为它会为你提供电话所在的国家/地区,

如果你这样做

    Locale.getDefault().getCountry();,

你有一个国家,用户选择国家,所以你可以选择英格兰,你可以在西班牙,也许你需要知道他在妈妈的位置

示例:假设您的应用只能在英国购买,用户来自西班牙,但他正在英国度假,他想购买您的产品......如果您使用

    Locale.getDefault().getCountry(); 

该用户无法购买您的产品,所以ip是我认为最好的方式

答案 6 :(得分:4)

Reto Meier撰写了一篇精彩的文章: http://android-developers.blogspot.com/2011/06/deep-dive-into-location.html

它描述了获取Android设备位置的不同技术,包括源代码。 接下来,当您有位置时,很容易获得国家/地区 - 使用可以在线使用web-serviceoffline database

答案 7 :(得分:2)

我知道这是一个非常古老的问题,但我认为这将有助于一些开发者:

很难找到没有GPS和Google服务(中国)的国家。如果手机中没有SIM卡,TelephonyManager将无法使用。

如果中国用户将他的语言设置为英语(您将获得的国家/地区将是美国或英国),则Locale将无效。

如果您的应用需要互联网连接,那么有一个选项。您可以使用名为ip-api的API。如果您计划使用此

,请先查看documentation

还有其他API,例如freegeoip api