Android如何判断Wifi高级设置是静态IP配置方式还是DHCP配置方式,偶然间发现一个小窍门,我们获取当前无线网络的DhcpInfo对象,可以观察这个对象在DHCP配置和静态IP配置方式下的输出信息,即调用DhcpInfo.toString()方法输出到控制台,其中DHCP配置方式下的输出信息为:
ipaddr 192.168.0.107 gateway 192.168.0.1 netmask 255.255.255.0 dns1 218.85.152.99 dns2 192.168.0.1 DHCP server 192.168.0.1 lease 7200 seconds
静态IP配置方式下的输出信息为:
ipaddr 192.168.0.107 gateway 192.168.0.1 netmask 255.255.255.0 dns1 218.85.152.99 dns2 192.168.0.1 DHCP server 0.0.0.0 lease 0 seconds
可以看到,静态IP配置方式下DhcpInfo对象的leaseDuration和serverAddress为0,而DHCP配置方式下DhcpInfo的这两个值都不等于0,由这两个值就可以判断出Wifi高级设置是静态IP配置方式还是DHCP配置方式,代码如下:
public String getWifiSetting(Context context){
WifiManager wifiManager=(WifiManager)context.getSystemService(Context.WIFI_SERVICE);
DhcpInfo dhcpInfo=wifiManager.getDhcpInfo();
if(dhcpInfo.leaseDuration==0){//静态IP配置方式
return "StaticIP";
}else{ //动态IP配置方式
return "DHCP";
}
}