【问题标题】:Android no reconect to configured networkAndroid没有重新连接到配置的网络
【发布时间】:2015-08-28 11:19:29
【问题描述】:

我正在尝试以编程方式连接到另一个网络。为了测试,我使用 nexus 7android 5.1.1。我在这里展示部分代码,即更改网络的代码:

        final String qu = "\"";
        final String MC_SSID = qu + SSID + qu;
        final String MC_PASS = qu + "mypass" + qu;

        Log.d(TAG,"Conecting to " + MC_SSID + " : " + MC_PASS);

        WifiConfiguration conf = new WifiConfiguration();
        conf.SSID = MC_SSID;
        conf.preSharedKey = MC_PASS;

        WifiManager wifiManager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE);
        wifiManager.addNetwork(conf);

        List<WifiConfiguration> list = wifiManager.getConfiguredNetworks();
        for( WifiConfiguration i : list ) {
            Log.d(TAG,"WifiConf -> " + i.SSID);
            if(i.SSID != null && i.SSID.equals(MC_SSID)) {
                Log.d(TAG,"I\'m going to connect to " + i.SSID);
                wifiManager.disconnect();
                wifiManager.enableNetwork(i.networkId, true);
                wifiManager.reconnect();

                break;
            }
        }

到这里一切正常,我看到顶部的 WiFi 图标消失了,但是当再次连接时,网络是最后一个网络,而不是 wifiManager 上配置的网络

在另一项测试中,我使用了另一家公司的不同平板电脑,它运行良好。

日志输出

08-28 13:00:45.174  25525-27323/com.urbanclouds.airsenseiv4 D/UpdateInformation﹕ Conecting to "My-SSID" : "mypass"
08-28 13:00:45.269  25525-27323/com.urbanclouds.airsenseiv4 D/UpdateInformation﹕ WifiConf -> "My-SSID"
08-28 13:00:45.269  25525-27323/com.urbanclouds.airsenseiv4 D/UpdateInformation﹕ I\'m going to connect to My-SSID

看来一切都很好。

我在一个外部线程执行这段代码,我不知道这是否会影响。

我做了一个应用程序来测试我是否做错了,该应用程序运行良好,并且更改效果很好。唯一的区别是在 ListView 内的 OnClickListener 上执行:

public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    if ( adapter.getItem(position) != null) {
        final String qu = "\"";
        final String MC_SSID = qu + adapter.getItem(position) + qu;
        final String MC_PASS = qu + "mypass" + qu;

        Log.d(TAG,"Conecting to " + MC_SSID);

        WifiConfiguration conf = new WifiConfiguration();
        conf.SSID = MC_SSID;
        conf.preSharedKey = MC_PASS;

        WifiManager wifiManager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE);
        wifiManager.addNetwork(conf);

        List<WifiConfiguration> list = wifiManager.getConfiguredNetworks();
        for( WifiConfiguration i : list ) {
            Log.d(TAG,"WifiConf -> " + i.SSID);
            if(i.SSID != null && i.SSID.equals(MC_SSID)) {
                Log.d(TAG,"Voy ha realizar la reconexion");
                wifiManager.disconnect();
                wifiManager.enableNetwork(i.networkId, true);
                wifiManager.reconnect();

                break;
            }
        }
    }
}

谁能告诉我为什么会这样? Nexus 7 的一些配置?我该如何解决?

编辑:如有必要,我可以发布保留代码,但它有点广泛。

【问题讨论】:

    标签: java android android-wifi


    【解决方案1】:

    好吧,经过一些测试和阅读WifiManager的文档,我没有断开重新连接wifi,而是使用了wifiManager.reassociate()的方法。

    这对我有用,我认为这比断开 wifi 更好,因为您正在尝试连接到另一个 WiFi 网络,请在 enableNetwork(i.networkId, true) 上描述并排除当前连接。

    使用其他方法,由于某种原因,虽然我禁用了其他网络,但设备并没有连接到我想要的网络。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-01
      • 2019-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-20
      • 1970-01-01
      相关资源
      最近更新 更多