首页 文章

如果设备上已连接WIFI SSID,则检查wifi凭据

提问于
浏览
0

情况:1)我的android设备已经成功连接到我的SSID,因此存储了密码,并且连接良好 . 2)在我的应用程序中,我可以选择用户为此网络输入wifi凭证(此处确定SSID没问题,但无法确定无root密码,因此用户手动输入)

问题:用户输入wifi密码后 - 我需要检查密码是否正确 - 只有检查这个的方法是连接到这个wifi网络 - 如何正确地做到这一点?

尝试了什么:当我从wifi ssid断开连接,并且我用凭证用户输入添加wifi的配置 - 即使它是错误的密码 - wifi重新连接成功,因为我猜之前从我的应用程序之外的配置输入的凭据是正确的 . 所以无论用户输入什么密码 - 无论如何都要连接,我不知道用户输入的凭证是否正确 .

任何帮助 - 欢迎!谢谢 .

1 回答

  • 0

    最后经过几个小时研究的人才能确定下一个:

    前提条件:1)设备连接到wifi网络,标准设备选项和正确的密码; 2)M尝试检查用户输入的此wifi网络的凭据 .

    结果:警告! (只有确切的动作流程对我有用):

    1)断开与wifi的连接:

    wifiManager.disconnect();
    

    2)创建配置:

    WifiConfiguration conf = new WifiConfiguration();
    conf.SSID = "\"" + wifiSsid + "\"";
    if(authType == 0){
        conf.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
    } else if(authType == 1) {
        conf.preSharedKey = "\""+ wifiPassword+"\"";
        conf.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
        conf.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40);
    } else {
        conf.preSharedKey = "\""+ wifiPassword+"\"";
    }
    conf.status = WifiConfiguration.Status.ENABLED;
    

    3)禁用并删除所有配置(实际上如果没有在您的应用程序中创建它们将不会被删除):

    List<WifiConfiguration> list = wifiManager.getConfiguredNetworks();
     for (WifiConfiguration i : list) {
         wifiManager.disableNetwork(i.networkId);
         wifiManager.removeNetwork(i.networkId);
     }
    

    4)添加创建的配置:

    final int networkId = wifiManager.addNetwork(conf);
    

    5)激活配置但仅使用此命令:

    wifiManager.enableNetwork(networkId, true);
    

    结果是,如果配置中的wifi密码是正确的,你可以在大约2到4秒内连接到wifi,但如果配置中的wifi密码错误 - 你连接(如果这个网络在通过设置之前连接)更长8 - 12秒 .

    这是你在2-4秒内没有连接,你可以写wifi凭据检查失败或连接到网络失败 .

    我要求从谷歌开发人员的功能到wifi管理员检查凭据能力,但是现在对我来说这就是所有可以做到的 .

    伙计们,欢迎任何其他解决方案!

相关问题