本文是从网上其余大佬那里拿过来的,自己保存备用。
private String getNetIp(Context ctx){
try {
NetworkInfo info = ((ConnectivityManager)ctx.getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo();
if (info != null && info.isConnected()) {
URL url = new URL("http://pv.sohu.com/cityjson?ie=utf-8");
URLConnection conn = url.openConnection();
BufferedReader reader = new BufferedReader(
new InputStreamReader(conn.getInputStream(),
"utf-8"));
String line = null;
StringBuffer result = new StringBuffer();
while ((line = reader.readLine()) != null) {
result.append(line);
}
reader.close();
String rString = result.toString().replace("var returnCitySN = ", "");
rString = rString.substring(0, rString.length() - 1);
JSONObject jsonObject = new JSONObject(rString);
return jsonObject.getString("cip");
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
return "";
}
private String getWifiIp(Context ctx){
try {
NetworkInfo info = ((ConnectivityManager)ctx.getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo();
if (info != null && info.isConnected() && info.getType() == ConnectivityManager.TYPE_WIFI) {
WifiManager wifiManager = (WifiManager) ctx.getSystemService(Context.WIFI_SERVICE);
WifiInfo infowifi = wifiManager.getConnectionInfo();
String ip = intIP2StringIP(infowifi.getIpAddress());
return ip;
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
return "";
}
public static String intIP2StringIP(int ip) {
return (ip & 0xFF) + "." +
((ip >> 8) & 0xFF) + "." +
((ip >> 16) & 0xFF) + "." +
(ip >> 24 & 0xFF);
}
位&运算: int a = 15; //x等于二进制数的00001111 int b = 6; //y等于二进制数的00000110 int c = x&y //z等于二进制数的00000110结果为:二进制数的00000110
位移:取二进制,>>为去掉最右边,>>后面是几,就去掉几位
<<为在最右边加上一个0,<<后面是几,就加上几个0
然后取值。