android wifi保存失败,连接到特定的wifi有时会在Android上失败

这是正在发生的事情。 基本上,您可以告诉操作系统禁用网络,并且您可以告诉操作系统启用网络,但是无法告诉操作系统要连接到哪个网络。

如果在设备上配置了多个WiFi接入点(并且两者都处于enabled状态),则操作系统将决定连接哪个接入点。

强制操作系统连接到范围内的其中一个网络而不是另一个网络的唯一方法是在您不想连接的范围内的网络上调用disableNetwork() 。

让我们逐行完成您的代码:

mWifiManager.disconnect();

上面的行告诉操作系统断开与当前连接的WiFi接入点的连接。

mWifiManager.enableNetwork(config.networkId, true);

上面的行告诉设备如果以前处于disabled状态,则将网络设置为enabled状态。

mWifiManager.reconnect();

从文档 :

如果我们当前已断开连接,请重新连接到当前活动的接入点。 这可能导致状态更改事件的异步传递。

所以,当你说相反它连接回以前连接的wifi。 ,它正如预期的那样工作,因为操作系统正在重新连接到它认为当前活动的接入点 。

如果你真的想要禁用其他网络,以便操作系统连接到你刚刚点击的那个,你可以这样做:

// Go through all the cached wifis and check if the selected GoPro was cached before WifiInfo info = mWifiManager.getConnectionInfo(); //get WifiInfo int id = info.getNetworkId(); //get id of currently connected network for (WifiConfiguration config : configurations) { // If it was cached connect to it and that's all if (config.SSID != null && config.SSID.equals("\"" + mDrawerListView.getAdapter().getItem(position) + "\"")) { // Log Log.i("onReceive", "Connecting to: " + config.SSID); mWifiManager.disconnect(); mWifiManager.disableNetwork(id); //disable current network mWifiManager.enableNetwork(config.networkId, true); mWifiManager.reconnect(); break; } }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值