【问题标题】:Unable to connect with WIFI using wifiManger无法使用 wifiManager 连接 WIFI
【发布时间】:2017-03-17 11:07:29
【问题描述】:

我正在尝试连接特定的 wifi,但它无法正常工作。每当我调用下面的代码时,已经连接的 wifi 停止并且手机在扫描模式下显示 wifi。有人可以告诉我为什么会这样。这是我的代码:

 String result = "";
    try {
        WifiConfiguration wifiConfig = new WifiConfiguration();
        wifiConfig.SSID = String.format("\"%s\"", ssid);
        WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);

        int netId = wifiManager.addNetwork(wifiConfig);
        wifiManager.disconnect();
        wifiManager.enableNetwork(netId, true);
        wifiManager.reconnect();
        int state = wifiManager.getWifiState();
        Log.i(TAG, "state: " + state);
        WifiInfo wifiInfo = wifiManager.getConnectionInfo();
        String newSSID = wifiInfo.getSSID();
        result = "Connected";
    } catch (Exception e) {
        result = "Failed";
        Log.e(TAG, "unable to set wifi " + ssid, e);
    }

【问题讨论】:

  • 这是一个开放的网络吗??如果没有,那么您还需要设置其他配置。
  • 这个没有打开但是已经保存在手机中了。所以我不认为我需要提供密钥和配置来连接它。

标签: android android-wifi android-wireless


【解决方案1】:

我认为您不应该再次添加 SSID。此代码wifiManager.addNetwork(wifiConfig) 正在向您的设备添加另一个 wifi 配置文件。

您只需要以下代码即可重新连接

private boolean connectToWifi(String ssid) {
    WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
    List<WifiConfiguration> wifiList = wifiManager.getConfiguredNetworks();
    for( WifiConfiguration config : wifiList ) {
        if(config.SSID != null && config.SSID.equals("\"" + ssid + "\"")) {
             wifiManager.disconnect();
             wifiManager.enableNetwork(config.networkId, true);
             wifiManager.reconnect();               
             return true;
        }           
    }
    return false;
}

【讨论】:

  • 好吧,你是对的。但我仍然无法连接。 wifi 关闭,然后返回之前连接的网络。这似乎是一个 android 在保存网络列表中优先选择默认网络。有什么办法可以从默认中删除这个metwork,然后在默认中添加一个新的?
  • @user526206 首先从设备中删除所有wifi配置文件,然后重新配置。
  • 谢谢。正确的方法是禁用连接的网络,例如:wifiManager.disconnect(); wifiManager.enableNetwork(config.networkId, true); wifiManager.disableNetwork(connectedNetwork); wifiManager.reconnect();
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-07-31
  • 2020-10-15
  • 2013-03-26
  • 2014-03-01
  • 2020-09-16
  • 2021-09-15
  • 2020-10-18
相关资源
最近更新 更多