Android笔记:Android设备获取公网IP
【摘要】
今天有个朋友要获取Android手机当前连入网络的ip,问我怎么做,我一想这还不简单。告诉他先判断是什么网络环境,如果是WiFi可以通过WifiManager获取到,如果是流量(2G、3G或者4G网)就通过NetworkInterface遍历获取getHostAddress()获得,但是他们要求获取不是路由器发出的局域网i...
今天有个朋友要获取Android手机当前连入网络的ip,问我怎么做,我一想这还不简单。告诉他先判断是什么网络环境,如果是WiFi可以通过WifiManager获取到,如果是流量(2G、3G或者4G网)就通过NetworkInterface遍历获取getHostAddress()获得,但是他们要求获取不是路由器发出的局域网ip,而是当前的外网ip,一般我们手机连接路由器,路由器分给我们的ip都是路由器转发的C网段的局域网ip,也就是192.168.x.xx 这样的网段,但是我们想要的真实的外网ip怎么获取呢?
话不多说直接上代码。
-
public class MainActivity extends Activity {
-
-
private TextView tv;
-
-
@Override
-
protected void onCreate(Bundle savedInstanceState) {
-
super.onCreate(savedInstanceState);
-
setContentView(R.layout.activity_main);
-
tv = (TextView) findViewById(R.id.tv);
-
new Thread(new Runnable() {
-
@Override
-
public void run() {
-
URL infoUrl = null;
-
InputStream inStream = null;
-
String line = "";
-
try {
-
infoUrl = new URL("http://pv.sohu.com/cityjson?ie=utf-8");
-
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();
-
while ((line = reader.readLine()) != null)
-
strber.append(line + "\n");
-
inStream.close();
-
// 从反馈的结果中提取出IP地址
-
int start = strber.indexOf("{");
-
int end = strber.indexOf("}");
-
String json = strber.substring(start, end + 1);
-
if (json != null) {
-
try {
-
JSONObject jsonObject = new JSONObject(json);
-
line = jsonObject.optString("cip");
-
} catch (JSONException e) {
-
e.printStackTrace();
-
}
-
-
}
-
tv.setText("ip===="+line);
-
}
-
} catch (MalformedURLException e) {
-
e.printStackTrace();
-
} catch (IOException e) {
-
e.printStackTrace();
-
}
-
tv.setText("ip===="+line);
-
}
-
}).start();
-
-
}
-
-
}
这就是方法了,大家可再根据自己的实际需要,进行修改。
文章来源: chengsy.blog.csdn.net,作者:程思扬,版权归原作者所有,如需转载,请联系作者。
原文链接:chengsy.blog.csdn.net/article/details/82115268
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)