我可以使用设备的SIM卡位置从设备获取国家/地区名称,但对于没有SIM卡的平板电脑,这将无效。如何在设备连接到互联网时从设备的IP中获取国家/地区代码或国家/地区名称?
答案 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();
}
});