Android自动连接WiFi优先级规则,以及查看已连接WiFi的密码

目前Android的WiFi自动连接的优先级规则如下:

1、priority值的范围设定为[0,1000000),如果超出此范围则会reset;

2、最近连接过的AP拥有最高priority,在自动连接中会首先尝试连接它;

3、未连接过但是扫描到的AP,按其信号值强弱排序,越强的显示靠前,但是,还得综合

AP的安全因素,基本情况是:WPA/WPA2 > WEP > signal level high > signal level low > noise low > noise

high

4、如果是预置的AP,可能会人为设定其最高的priority;

看一下源码,代码路径:frameworks/base/wifi/java/android/net/wifi/

WifiConfigStore.java

 boolean selectNetwork(int netId) {
        if (VDBG) localLog("selectNetwork", netId);
        if (netId == INVALID_NETWORK_ID) return false;

        // Reset the priority of each network at start or if it goes too high.
        if (mLastPriority == -1 || mLastPriority > 1000000) {
            Xlog.d(TAG, "Need to reset the priority, mLastPriority:" + mLastPriority);
            for(WifiConfiguration config : mConfiguredNetworks.values()) {
                if (config.networkId != INVALID_NETWORK_ID) {
                    config.priority = 0;
                    addOrUpdateNetworkNative(config);
                }
            }
            mLastPriority = 0;
        }

        // Set to the highest priority and save the configuration.
        WifiConfiguration config = new WifiConfiguration();
        config.networkId = netId;
        config.priority = ++mLastPriority;

        addOrUpdateNetworkNative(config);
        mWifiNative.saveConfig();

        /* Enable the given network while disabling all other networks */
        enableNetworkWithoutBroadcast(netId, true);

       /* Avoid saving the config & sending a broadcast to prevent settings
        * from displaying a disabled list of networks */
        return true;
    }

有时候,我们会忘记已连接WiFi的密码,应用市场也有相关的应用可以帮我们读取。其实如有有Root权限,用RE文件管理器(Root Explorer)就可以查看了。文件路径:

/data/misc/wifi/sockets/wpa_supplicant.conf

每一个network包裹起来的就是一个连接过的WiFi热点,其中ssid是名字,psk就是密码了,也可以看到其他信息,包括加密类型key_mgmt和优先级priority,是否自动连接autojoin等,如下图:

转载请注明出处:周木水的CSDN博客 http://blog.csdn.net/zhoumushui

我的GitHub:周木水的GitHub https://github.com/zhoumushui

时间: 2024-10-23 14:18:32

Android自动连接WiFi优先级规则,以及查看已连接WiFi的密码的相关文章

Windows8.1查看已连接无线WIFI密码

Windows8.1操作系统下查看已连接无线wifi密码操作步骤如下: 1.右键任务栏中的无线图标,在弹出的菜单中选择"打开网络和共享中心": 2.在网络和共享中心界面中点击"WLAN"链接进入"WLAN状态": 3.在WLAN状态界面中点击"无线属性"按钮: 4.在无线网络属性界面中切换至"安全"Tab页: 5.在安全界面中勾选"显示字符"即可查看网络安全秘钥:

百度经验:Win10查看已存储WiFi密码的两种方法

方法一:网络和共享中心查询 具体步骤可以参考:Win10查看WIFI密码的方法 方法二:命令提示符查询 1.右键单击开始按钮,选择“命令提示符(管理员)” 2.输入如下命令(下图①号命令): netsh wlan show profiles 密码会在下方“密钥内容(key content)”中给出,本图不再列出 3.在给出的曾经使用过的WiFi连接中选择你想查询的连接名称,然后套入如下命令(上图②号命令)中查询密码: netsh wlan show profile name=“连接名” key=

笔记本电脑已连接wifi密码

有时候,想登陆自己家的无线网络(尤其朋友来家里突然需要连接无线网络),但这时脑子一片空白想不起来密码,怎么办呢? 其实,我们可以通过电脑来查看网络的密码,现在分享如何在笔记本电脑上查看连接过的无线网络密码. [1]界面操作方式 1.打开笔记本电脑的无线网连接列表,如下图所示界面: 2.查看已连接网络的属性.鼠标右击->选择属性. 3.切换到安全栏. 4.勾上显示字符的框.显示字符启用,密码会从加密状态切换到明文状态. [2]命令行查询方式 通过命令行查询方法步骤: 1.命令:cmd 2.命令:n

Android自动连接指定的wifi,免密码或指定密码

一.运行时的状态 遇到一个这样的要求:“不进行扫描操作,怎么对指定的免密码WIFI进行连接(之前没有连接过)”,于是动手写了一个Demo,如图所示未连接成功时的状态,第一个编辑框让用户输入SSID,第二个编辑框输入密码,密码可以根据实例情况输入,也可以不输入密码,因为有些Wifi免密码.这里的免密码不是指可以破解wifi密码.注意图片中手机顶部的wifi图标,是没有的,说明此时并没有打开手机的wifi.在手机上运行状态如下所示: 输入SSID,点击连接后的状态,当手机的wifi没有打开时,程序将

Android代码连接Wifi时被系统切换到其他Wifi的问题

首先说下Android代码连接Wifi的几个步骤:(以下涉及到具体API函数自查哈,写的时候凭借印象大致写了下) 转载请注明出处: 胖虎:http://blog.csdn.net/ljphhj 1.首先要开启Wifi连接开关,mWifiManager.setWifiEnabled(true) 2.通过获取List<ScanResult>来获取到Wifi连接列表.(mWifiManager.getScanResults) 3.获取List<WifiConfiguration>列表.(

【Android】 得到当前已连接的wifi的信号强度

1.得到当前已连接的wifi信息 WifiManager wifi_service = (WifiManager)getSystemService(WIFI_SERVICE); WifiInfo wifiInfo = wifi_service.getConnectionInfo(); 其中wifiInfo有以下的方法: wifiinfo.getBSSID(): wifiinfo.getSSID(): wifiinfo.getIpAddress():获取IP地址. wifiinfo.getMacA

使用cmd查看电脑连接过的wifi密码(二)

上次写了一个查看wifi的bat文件(https://www.cnblogs.com/feiquan/p/9823402.html),发现有个问题就没法保存到记事本,而且还要处理不同的系统语言,这次重新更新了一下文件. 获取方式: 1.可直接拷贝代码到记事本后改后缀为bat 2.百度网盘: 链接:https://pan.baidu.com/s/1VRSRHA9GLFTt6FcVrpHucw 提取码:w3bw 主要有3个文件: Password是最后密码的存放文件夹,其中的文件是以时间命名的,保证

Windows小技巧 -- 已连接wifi密码查看

部分情况,想和朋友分享连接过的Wifi密码,可能不知道怎么来查询,下面记录几种查询已连接的Wifi密码方法,具体如下: 方式一 :无线属性页面查询 快捷键 Win + R ,打开运行窗口,输入 ncpa.cpl 快速打开 网络连接 页面,找到 WIFI 右键状态,弹出的 WLAN 状态 窗口点击 无线属性, 在弹出的 xxx 无线网络属性 窗口中,点击 安全 选项卡勾选 显示字符 就可以在 网络安全秘钥 后看到当前wifi的密码,如下图: 方式二 :netsh命令查询 netsh(Network

查看手机中wifi密码

对于用户连接过的wifi,android系统把相关信息明文保存在 /data/misc/wifi/wpa_supplicant.conf 中,root之后可以查看,或者利用手机的备份功能进行备份,这样不用root也可以查看. 参考: 1.http://zone.wooyun.org/content/2674