Android 已连接WIFI配置获取

本文介绍了如何在Android中获取已连接WIFI的SSID、子网掩码、MAC地址和DNS信息。通过WifiInfo对象可以方便地获取SSID和MAC地址,而子网掩码则需通过adb命令获取并解析字符串。DNS信息可通过WifiInfo的toString方法间接获取。

最近在做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;
    }

暂时没了,以后再有再更

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值