Android wifimanager启用网络似乎启用了错误的网络

时间:2017-01-20 08:57:15

标签: java android wifimanager

我制作了一个Android应用程序,它在启动时获取当前的wifi网络并连接到另一个。至少这是应该做的:

wifiInfo = wifiManager.getConnectionInfo();
OldNetworkID = wifiInfo.getNetworkId(); //save current network
WDTNetworkID = wifiManager.addNetwork(wificonfiguration); //add new network
wifiManager.disconnect();
wifiManager.enableNetwork(WDTNetworkID, true); //enable new network and disable all others
wifiManager.reconnect();

当我调试时,我可以看到wificonfiguration包含正确的SSID(新网络的SSID)。

addNetwork()之后,我看到wifiManager.getConfiguredNetworks()包含具有正确SSID且与WDTNetworkID相同的网络ID的新网络。此时网络已启用。

但在启用enableNetwork()而不是WDTNetworkID并且其他人已停用后,我看到OldNetworkID已启用且其余已停用。

我做错了吗?

This is what it looks like

我在调试时添加了几张手表的图片。 您可以在此处看到旧网络已启用,其余网络已禁用。

2 个答案:

答案 0 :(得分:0)

这里的问题是app运行的设备是android 5.1.1。 正如它在enableNetwork()

的文档中所述
  

注意:如果应用程序的目标SDK版本为LOLLIPOP或更新,即使连接了Wi-Fi,网络通信也可能无法使用Wi-Fi;也可以通过其他网络发送流量,例如蜂窝数据,蓝牙网络共享或以太网。例如,如果提供互联网接入的另一网络(例如,蜂窝数据)可用,则流量将永远不会使用不提供互联网接入的Wi-Fi网络(例如,无线打印机)。需要确保其网络流量使用Wi-Fi的应用程序应使用bindSocket(java.net.Socket)openConnection(java.net.URL)bindProcessToNetwork(Network)等API来执行此操作。

答案 1 :(得分:0)

您只需将此行添加到您的代码中即可。我有同样的问题,添加此行帮助me.conf.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);

//After sleep a little milliseconds then check exist connection with this code:
try {
 Thread.sleep(3000);
 Toast.makeText(MyActivity.this, "You are connected to " + 
 mainWifimanagerObject.getConnectionInfo().getSSID(), Toast.LENGTH_LONG).show();
} 
catch (InterruptedException e) {e.printStackTrace();}