Android 通过外网IP定位城市

获取外网IP

/*** 通过CmyIP获取获取外网外网地址  需在异步线程中访问* @return 外网IP*/
public static String getOuterNetFormCmyIP() {String response = NetWorkUtil.GetOuterNetIp("http://www.cmyip.com/");Pattern pattern = Pattern.compile("((?:(?:25[0-5]|2[0-4]\\d|((1\\d{2})|([1-9]?\\d)))\\.){3}(?:25[0-5]|2[0-4]\\d|((1\\d{2})|([1-9]?\\d))))");Matcher matcher = pattern.matcher(response.toString());if (matcher.find()) {String group = matcher.group();return group;}return null;
}/*** 获取获取外网外网地址  需在异步线程中访问* @param ipaddr 提供外网服务的服务器ip地址* @return       外网IP*/
public static String GetOuterNetIp(String ipaddr) {URL infoUrl = null;InputStream inStream = null;try {infoUrl = new URL(ipaddr);URLConnection connection = infoUrl.openConnection();HttpURLConnection httpConnection = (HttpURLConnection) connection;int responseCode = httpConnection.getResponseCode();if (responseCode == HttpURLConnection.HTTP_OK) {inStream = httpConnection.getInputStream();BufferedReader reader = new BufferedReader(new InputStreamReader(inStream, "utf-8"));StringBuilder strber = new StringBuilder();String line = null;while ((line = reader.readLine()) != null)strber.append(line + "\n");inStream.close();return strber.toString();}} catch (MalformedURLException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}return "";
}

添加权限

<uses-permission android:name="android.permission.INTERNET" />

使用

new Thread() {@Overridepublic void run() {String outerIp = NetWorkUtil.getOuterNetFormCmyIP();Log.i(TAG, "outerIp: " + outerIp);}
}.start();

定位城市

在获取到外网地址后,有以下几种方法定位城市

方法一 通过聚合数据的IP定位API 进行城市定位 (无需SDK,需传入外网IP)

可通过聚合数据的API实现

方法二 通过百度地图API进行定位 (无需SDK,需传入外网IP)

百度地图 普通IP定位API

方法三 通过百度地图SDK进行定位 (需要SDK,无需传入外网IP)

百度地图Android定位SDK

方法四 通过高德地图开放平台进行定位 (需要SDK,无需传入外网IP)

高德地图Android定位SDK

其他

示例代码

Android 通过外网IP定位城市相关推荐

  1. Android 获取外网IP,实测有效

    网上有很多获取IP的例子,不过都是获取到的本地ip,还有的是因为走不通了,获取到的ip为空,下面看实测获取到外网IP的代码,注意需要在线程里面执行 /*** 获取外网的IP(要访问Url,要放到后台线 ...

  2. 获取外网IP,再根据IP定位城市

    根据ip定位城市对外开放的接口,有些接口不能直接用了,比如说淘宝接口.这里我用的是一个不知名的接口. 1.AddressUtil工具类 package cn.ztjz.module.audit.uti ...

  3. Android 手机app三种方法获取定位地址(自带API,外接SDK,获取外网IP)

    一.手机App定位在我看来有三种方法: 1.通过Android自带的API:LocationManager获取到经纬度,再通过Geocoder反地理位置查询到所在的地址. 2.外接SDK,如高德SDK ...

  4. 获取客户端外网IP,省份,城市,运营商

    /// <summary>     /// 获取客户端外网IP,省份,城市,运营商     /// 2012年12月18日 15:07     /// </summary>   ...

  5. Android 获取本地外网IP、内网IP、计算机名等信息

    一.获取本地外网IP public static String GetNetIp() { URL infoUrl = null; InputStream inStream = null; try { ...

  6. Android 获取客户端外网IP和服务端IP

    项目组最近添加新需求,要获取客户端和服务端IP,削微研究了一下,总结如下: 1.获取客户端外网IP(为啥不要内网,因为那玩意没鸟用,外网IP起码能确定客户端的地区位置) 目前只有一种方法可以获取:发送 ...

  7. 一次应用访问数据库 IP 配成外网 IP 引发的血案

    我们生产的渠道对接系统出现大量推送运营商信息失败的现象.问题最终定位到 mongo 身上: .00:03:05.425 [http-nio-9100-exec-53] ERROR c.d.r.s.i. ...

  8. 怎么换外网IP地址 如何设置代理服务器上网

    由于网络的飞速的发展,上网也是现代人必不可少的,由于很多小伙伴资讯我们怎么修改外网IP来做些网上的业务,其实简单来说就是修改自己本地IP地址,我们上网都会产生一个IP,有些工作需要想把它改成其他城市的 ...

  9. java如何获得内网ip、外网ip、以及如何根据ip查询地址

    今天突发奇想地想要用java写一个小的工具类. 用来实现如何获得本机的内网ip,外网ip和根据ip获得相应的地址. 花了几个小时才弄清,然后整理了一下,希望有用. 首先要明白以下三种ip地址的区别: ...

最新文章

  1. 进程、应用程序域、程序集、对象上下文区别与联系
  2. 返回CompletableFuture:Java 8功能亮点
  3. tuxedo连接mysql_9.5.3 Tuxedo与各种数据库的连接
  4. 2012总结--第10篇--工作篇
  5. 编写base64图片文件
  6. JAVA面试要点009---TimeUnit用法
  7. Windows Phone 7 Coding4Fun的弹出框
  8. jpg格式怎么转换成plt格式的_一种JPG图像到PLT文件的转化方法.pdf
  9. 程序员自学编程的6种方法,高效学习
  10. 苹果系统“加载图片时提示“无法置入jpg,因为暂存盘已满”怎么解决?
  11. 浅谈目前政企办公协作的需求与痛点
  12. Java UTC时间与本地时间互相转换
  13. Python批量获取手机号码归属地(图文展示)
  14. CRM 窗体定制技巧和代码
  15. HTML5吃豆豆游戏开发实战(三)2d碰撞检测、重构
  16. nc文件在ncl中取代nan值为缺省值
  17. win10 删除无限嵌套文件夹方法
  18. ZEMAX常用操作数及常见用法(更新中。。。)
  19. 微信小程序医院门诊体检预约信息管理系统SSM-JAVA【数据库设计、论文、源码、开题报告】
  20. 英特尔oneAPI——异构计算学习总结

热门文章

  1. 控制儿童在什么时段使用计算机,win10系统设置控制孩子用电脑的时间的图文步骤...
  2. 整理了一下oxidized+mysql+gitlab,感觉很好用,做个记录
  3. 苹果手机4g网速慢怎么办_手机推荐:选华为5G还是苹果4G:内行人说出了大实话!...
  4. 手机号 电话号码 邮箱 验证
  5. STM32要按复位键才能下载问题解决
  6. spring boot修改启动图标和启动成功提示
  7. P1345 [USACO5.4]奶牛的电信Telecowmunication
  8. 员工激励:什么样的方法最合适?
  9. vue.js动态设置VueComponent高度遇到的问题
  10. 产品经理进修第四天 产品增长怎么做