最近在项目中需要上传IPv4、IPv6、MAC、IMEI、AndroidID、设备序列号、当前时区、设备品牌型号信息给SDK,翻翻找找,东拼西凑,总算是完成了这个功能,分别记录如下:
-
获取IPv4:
IPv4获取分为内网IP和外网IP,简单说一下这两者的区别,内网IP很好理解,就是给在一个路由器下挂着的内部网络中的计算机分配的地址,一般都是192.168.0.***类似的;外网IP可以理解为一个网络群体的IP,比如一个学校的网络IP,就是这个学校总交换机(总路由器在外网中的地址)。以上理解可能有误 ,仅供参考。
获取代码:
/**
* 获取外网IP地址
* @return
*/
public void GetNetIp() {
new Thread(){
@Override
public void run() {
String line = "";
URL infoUrl = null;
InputStream inStream = null;
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 {
JSONOb