最近在做wifi这一块的功能,浅浅记录一下
1.SSID
就是wifi的名称嘛
/**
* 获取连接的WiFi的SSID
*
* @return String - wifi名称
*/
public static String getWifiSsid() {
WifiInfo connectionInfo = wifiManager.getConnectionInfo();
return connectionInfo.getSSID();
}
这个WifiInfo对象还能获取别的一些,比如密码,频段(根据frequency推断)
2.子网掩码
我们用adb命令可以在看到一些相关的网络配置。其中就有子网掩码。为什么不用WifiInfo的对象获取,是因为获取到的子网掩码为0.0.0.0,获取了个寂寞
adb shell
ifconfig

既然能用adb获取到,那就用代码去控制台获取。然后结果是一行一行的字符串。就用字符串的方法截取下来子网掩码。Mask后面的就是子网掩码。trim()去除头尾的空格。
/**
* 获取连接的wifi的子网掩码
*
* @return String,例:0.0.0.0
*/
public static String getWifiMask() {
String wifiMask = "0.0.0.0";
BufferedReader bufferedReader;
try {
Process process = Runtime.getRuntime().exec(new String[]{"ifconfig"});
bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
while ((line = bufferedReader.readLine()) != null) {
//“Mask”在此行的索引
int index;
if ((index = line.indexOf("Mask:")) != -1) {
//截取子网掩码
wifiMask = line.substring(index + "Mask:".length()).trim();
break;
}
}
bufferedReader.close();
} catch (IOException e) {
e.printStackTrace();
}
return wifiMask;
}
3.MAC地址/物理地址(路由器地址?我觉得是。。。)
还是用WifiInfo对象来获得,WifiInfo yyds
/**
* 获取已连接wifi的路由器MAC地址
*
* @return String 例:ff-ff-ff-ff-ff-ff
*/
public static String getWifiMac() {
WifiInfo connectionInfo = wifiManager.getConnectionInfo();
return connectionInfo.getMacAddress();
}
4.DNS
这个也是通过WifiInfo的对象来获得 ,不过不是直接获得,直接wifiinfo的对象.dns1得到的是一个int,我也不知道怎么转换。但是Wifiinfo的toString()方法得到的字符串里面的dns是帮我们转换了的,哈哈哈哈哈真是天助我也。还是用截取字符串的方法。
/**
* 获取连接WiFi的DNS
*
* @return String DNS1+DNS2
*/
public static String getWifiDns() {
DhcpInfo dhcpInfo = wifiManager.getDhcpInfo();
String dhcp = dhcpInfo.toString();
Log.d(TAG, "getWifiDns: DHCP " + dhcpInfo);
String dns1 = dhcp.substring(dhcp.indexOf("dns1") + "dns1".length(), dhcp.indexOf("dns2")).trim();
Log.d(TAG, "getWifiDns: DNS1 " + dns1);
String dns2 = dhcp.substring(dhcp.indexOf("dns2") + "dns2".length(), dhcp.indexOf("DHCP")).trim();
Log.d(TAG, "getWifiDns: DNS1 " + dns2);
return dns1 + "\n" + dns2;
}
暂时没了,以后再有再更
本文介绍了如何在Android中获取已连接WIFI的SSID、子网掩码、MAC地址和DNS信息。通过WifiInfo对象可以方便地获取SSID和MAC地址,而子网掩码则需通过adb命令获取并解析字符串。DNS信息可通过WifiInfo的toString方法间接获取。
1650

被折叠的 条评论
为什么被折叠?



