2016-09-18 108 views
-1

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

回答

0

这取决于你想要的精确程度 - 注意这个技术不是很准确!有各种通过IP地址击败地理定位的方式。

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

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

你不想存储每个地址 - 有40亿个可能的地址 - 但是存储大范围。这将大大减少桌子的尺寸。

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(); 
     } 
    }); 
+0

感谢MARMOR,我一直在使用仿真器测试此代码,但结果是空的。 – hawkeye

+0

我用真实设备检查仍然不工作!显示空值。 – hawkeye

相关问题