先发一个链接是我参考的代码
http://blog.csdn.net/zyp009/article/details/21242073
基本就是拿过来用 里面调用的函数都没碰
public void StartWifiStaticIP() {
WifiManager wifiManager = (WifiManager) getActivity().getSystemService(Context.WIFI_SERVICE);
WifiConfiguration wifiConfig = null;
WifiInfo connectionInfo = wifiManager.getConnectionInfo(); //得到连接的wifi网络
List<WifiConfiguration> config_static = wifiManager.getConfiguredNetworks();
for (WifiConfiguration conf : config_static)
if (conf.networkId == connectionInfo.getNetworkId()) {
wifiConfig = conf;
break;
}
if (wifiConfig == null) return;
Log.e("StartWifiStaticIP", "wifiConfig=" + wifiConfig.toString());
try {
setIpAssignment("STATIC", wifiConfig);
setIpAddress(InetAddress.getByName("192.168.1.110"), 24, wifiConfig);
setGateway(InetAddress.getByName("192.168.1.1"), wifiConfig);
setDNS(InetAddress.getByName("202.96.64.77"), wifiConfig);
wifiManager.updateNetwork(wifiConfig);
wifiManager.enableNetwork(wifiConfig.networkId, false);
wifiManager.enableNetwork(wifiConfig.networkId, true);
wifiManager = null;
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (java.lang.InstantiationException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (UnknownHostException e) {
e.printStackTrace();
}
}
然后有几个问题 一个就是
setIpAddress(InetAddress.getByName("192.168.1.110"), 24, wifiConfig);
函数中的24是什么意思
还有就是我设置了静态IP之后,重新获取当前IP地址网关等信息获取到的还是我没执行函数之前的IP地址,这时候我连一下别的WIFI再连接这个我设置的wifi获取的才是我执行函数后的IP地址。。这里是什么原因呢。。。
还有就是IP地址的数值如果稍微大一点 如 192.168.1.180这样获取的IP地址是一个负数,求大神指点。。。