gpt4 book ai didi

java - 如何使用给定的 ssid 和密码测试 wifi 连接并返回给定的 ssid 和密码是否正确的结果

转载 作者:行者123 更新时间:2023-11-29 23:40:50 25 4
gpt4 key购买 nike

我想通过android应用程序测试wifi连接,检查输入的wifi ssid和密码是否正确。如何检查给定的 ssid 和密码是否正确?

最佳答案

这是我们在应用程序中所做的:

  1. 我们确保 wifi 已启用
  2. 我们使用 ssid 和 pw 创建一个 WifiConfiguration(注意 WifiConfiguration.SSID 和 WifiConfiguration.preSharedKey 被引号括起来,这样如果 ssid 是 example 而 pw 是密码那么 WifiConfiguration.SSID = "\"example\""WifiConfiguration.preSharedKey = "\"password\""
  3. 我们将 WifiConfiguration 添加到 WifiManager (WifiManager.addNetwork(WifiConfiguration))
  4. 我们检查返回值(这是一个 networkId),如果它是 -1 则操作不成功
  5. 我们告诉 WifiManager 启用上一步中的 networkId 并尝试连接 (WifiManager.enableNetwork(netId, true))
  6. 我们检查与此 WifiConfiguration 的协商是否成功。这一步有一些丑陋的代码,我很想得到一些其他的想法,但它有效:

    private static boolean checkWifiNegotiation(WifiManager wifiManager, int netId) {
    boolean startedHandshake = false;
    boolean successful = false;

    for (int i = 0; i < 30; i++) {
    try {
    Thread.sleep(300);
    } catch (InterruptedException e) {
    e.printStackTrace();
    }

    SupplicantState currentState = wifiManager.getConnectionInfo().getSupplicantState();
    if (!startedHandshake && currentState.equals(SupplicantState.FOUR_WAY_HANDSHAKE)) {
    startedHandshake = true;
    } else if (startedHandshake) {
    if (currentState.equals(SupplicantState.DISCONNECTED)) {
    break;
    } else if (currentState.equals(SupplicantState.COMPLETED)) {
    successful = true;
    break;
    }
    }
    wifiManager.enableNetwork(netId, true);
    }

    // no matter what happened above, if COMPLETED then we have the correct pw
    if (!successful && wifiManager.getConnectionInfo().getSupplicantState().equals(SupplicantState.COMPLETED)) {
    successful = true;
    }

    return successful;
    }

关于java - 如何使用给定的 ssid 和密码测试 wifi 连接并返回给定的 ssid 和密码是否正确的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51870413/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com