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

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

尝试这个,

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

关于这一点总是有很多的讨论,我也不明白为什么开发者和公司会采取复杂的方式。 用户select的语言意味着他/她总想在他/她的电话中看到的语言。 他们不打算使用不同于其他语言或系统的应用程序。

select是非常简单的:使用语言环境(获取用户select的语言作为首选语言),或者尽可能地使用语言显示他们的信息,他们已经说过他们不想看到的东西。

要获取国家代码使用:

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

它比getSimCountryIso因为getSimCountryIso依赖于运营商在SIM卡上烧国家ISO,并且它也支持CDMAnetworking。

我通过IP地址解决了它。 你可以得到你的手机的IP地址。 如果您使用的是WiFi,那么它将IP地址的WiFi热点或您的移动服务提供服务器的IP,所以从这个IP您可以发送到Web服务或东西跟踪国家的IP地址有一些来源(数据库)可用,如果互联网这里提供的IP国家是http://whatismyipaddress.com/ip-lookup的例子。;

我认为ip是最好的方式,因为它会给你的手机在哪里的国家,

如果你这样做

  Locale.getDefault().getCountry();, 

你得到了用户select国家的国家,所以你可以select英格兰,你可以在西class牙,也许你需要知道他在哪里

例如:假设你的应用程序只能在英国买东西,用户来自西class牙,但他在英格兰度假,他想购买你的产品…如果你使用

  Locale.getDefault().getCountry(); 

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

Reto Meier有一篇很好的文章: http : //android-developers.blogspot.com/2011/06/deep-dive-into-location.html

它描述了不同的技术来获取Android设备的位置,包括源代码。 接下来,当你有位置的时候,很容易得到它的国家 – 使用可以使用在线networking服务或离线数据库

你可以使用这个代码来获得ISO2: Locale.getDefault().getCountry()

并且这样得到ISO3: Locale.getDefault().getISO3Country()

希望这可以帮助

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

没有GPS和Google服务(中国)很难find这个国家。 如果手机中没有SIM卡, TelephonyManager将无法工作。

如果在中国的用户将他的语言设置为英语(您将获得的国家将是美国或英国),则Locale将不起作用。

如果你的应用程序需要互联网连接,那么有一个选项。 你可以使用这个称为ip-api的API 。 如果你打算使用这个,请首先阅读文档

还有其他API像这个freegeoip api