如何从设备IP地址知道国家名称?

时间:2016-09-18 06:15:23

标签: android

我可以使用设备的SIM卡位置从设备获取国家/地区名称,但对于没有SIM卡的平板电脑,这将无效。如何在设备连接到互联网时从设备的IP中获取国家/地区代码或国家/地区名称?

2 个答案:

答案 0 :(得分:0)

这取决于你想要的确切程度 - 注意这种技术无论如何都不是很准确!有各种各样的方法可以通过IP地址来打败地理位置。

但是,有些网站可以使用IP地址进行查询,它将返回一个couontry。

但如果您不想上网查找,则需要转储当前列表,在查找表中对其进行编码,并将其存储在程序中。

您不希望存储每个地址 - 有40亿个可能的地址 - 而是存储大范围。这将大大减少表格大小。

答案 1 :(得分:0)

这是您可以在项目中使用的适用于Android的GeoIP库。 它使用在线API从IP地址获取国家/地区。

https://github.com/seventhmoon/GeoIp-android

以下是有关如何使用它的摘录:

   ApiManager apiManager = new ApiManager(Volley.newRequestQueue(context));
   apiManager.getGeoIpInfo(new Response.Listener<GeoIpResponseModel>() {
        @Override
        public void onResponse(GeoIpResponseModel response) {
            //This is how you get the information.
            //not all attribute are listed
            String country = response.getCountry();
            String city = response.getCity();
            String countryCode = resopnse.getCountryCode();
            double latitude = response.getLatitude();
            double longtidue = response.getLongitude();
            String region = response.getRegion();
            String timezone = response.getTimezone();
            String isp = response.getIsp();
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            String errorMessage = error.toString();
        }
    });