gpt4 book ai didi

Android wifimanager 总是返回 true

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:17:45 32 4
gpt4 key购买 nike

这让我很难受,我们将不胜感激。

我想使用 wifi 管理器连接到开放网络。我遇到的问题是代码声称连接到任何网络——甚至是不存在的网络。下面是使用网络的 SSID 执行和调用的完整代码。无论您将什么字符串作为网络的 SSID 传递给它,即使不存在任何形状或形式的此类网络,enableNetwork 声明都会返回 true,我相信这意味着它已连接到网络。

我需要做的是确保我有连接。因此,如果我传递一个不存在的网络 SSID(例如,它超出范围),API 应该在尝试连接时返回失败。

任何想法/提示/建议将不胜感激。

public boolean conto (String network){

WifiConfiguration wifiConfiguration = new WifiConfiguration();
wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
List<WifiConfiguration> configs = null;
int inetId = -1;


// make sure there are no funny stuff in the config
configs = wifi.getConfiguredNetworks();
for (WifiConfiguration config : configs) {
wifi.removeNetwork(config.networkId);
Log.d("********", "Removed Network: SSID=[" + config.SSID + "] and ID=[" + config.networkId + "]");

}

// Now add the network
wifiConfiguration.SSID = "\"" + network + "\"";
wifiConfiguration.hiddenSSID = false;
//wifiConfiguration.priority = 1;
//wifiConfiguration.networkId = 999;

inetId = wifi.addNetwork(wifiConfiguration);
if(inetId < 0) {
Log.d("********", "Could Not Add Network......... [" + wifiConfiguration.SSID + "]");

}
else {

Log.d("********", "Added Network......... [" + wifiConfiguration.SSID + "]");

// Lets be paranoid and double check the config file
Log.d("********", " +++++++++++++++++++++++++ This is what I have in Config File");
configs = wifi.getConfiguredNetworks();
for (WifiConfiguration config : configs) {
Log.d("********", "In the Config file after add, SSID=[" + config.SSID + "], ID=[" + config.networkId + "]");

}

// Now Enable the network
boolean successConnected = wifi.enableNetwork(inetId, true);
//boolean successAssociated = wifi.reassociate(); This did not change the results

if(successConnected) {
Log.d("********", "Connected to......... [" + inetId + "]");
}
else {

Log.d("********", "Could Not Connect to......... [" + inetId + "]");

}


}
return false;
}

最佳答案

我认为问题在于您的代码基于连接到 WiFi 网络是同步过程的假设,但事实并非如此。 enableNetwork() 方法在连接发生时不阻塞,然后返回连接成功或失败的结果,它立即返回,结果只是请求是否正确到达 WiFi 服务和请求者.

如果您想了解设备的连接状态,您需要监控 WifiManager。 SUPPLICANT_STATE_CHANGED_ACTIONWifiManager.SUPPLICANT_CONNECTION_CHANGE_ACTION 使用 BroadcastReceiver 广播 Intent 操作。一旦您启动连接过程,这些回调将告诉您事情的进展情况。例如,如果您传入一个不存在的网络,连接状态几乎会立即直接变为 DISCONNECTED。而一个有效的网络将经历关联、认证和连接的过程。通过这些广播列举了所有这些步骤。

关于Android wifimanager 总是返回 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5264739/

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