如何获得国家(或其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