Android wifimanager总是返回true

这对我很伤心,任何帮助都会非常感激。 我想使用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服务和请求者。 如果您想了解设备连接状态的情况,您需要使用
BroadcastReceiver
监控
WifiManager. SUPPLICANT_STATE_CHANGED_ACTION
WifiManager.SUPPLICANT_CONNECTION_CHANGE_ACTION
广播意图操作。一旦启动连接过程,这些回调将告诉您事情的进展情况。例如,如果传入不存在的网络,连接状态几乎应立即直接进入DISCONNECTED。有效的网络将经历关联,身份验证和连接的过程。所有这些步骤都通过这些广播进行了列举。     
发现了这个。以这种方式建立连接。 在Android中通过WiFi连接到开放网络 保存配置,以便Android在下次通过WiFi连接时引用它。 HTH!     

要回复问题请先登录注册