Android WIFI 联接不加密热点总是失败 addNetwork总是返回-1

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介:

问题:连接加密的热点 就可以连接,连接不加密的热点不能连接。addNetwork这个操作总是返回-1 

代码如下:这是connect

public static boolean Connect(String SSID, String Password, int Type) {         
        WifiConfiguration wifiConfig = createWifiInfo(SSID, Password, Type);        
        if (wifiConfig == null) {
        Log.v(TAG,"wifiConfig == null");
            return false;
        }
        int netID = settingWifiAdmin.wifiManager.addNetwork(wifiConfig);
        Log.v(TAG,"netID = "+netID);//连不加密AP总是返回-1  
        boolean bRet = settingWifiAdmin.wifiManager.enableNetwork(netID, true);
        return bRet;
    }


/***
     * 配置要连接的WIFI热点信息    
     * @param SSID
     * @param password
     * @param type  加密类型
     * @return
     */     
    public static WifiConfiguration createWifiInfo(String SSID, String password, int type) {  
        
        Log.e(TAG, "SSID = " + SSID + "## Password = " + password + "## Type = " + type);  
          
        WifiConfiguration config = new WifiConfiguration();  
        config.allowedAuthAlgorithms.clear();  
        config.allowedGroupCiphers.clear();  
        config.allowedKeyManagement.clear();  
        config.allowedPairwiseCiphers.clear();  
        config.allowedProtocols.clear();  
        config.SSID = """ + SSID + """;  
  
        //增加热点时候 如果已经存在SSID 则将SSID先删除以防止重复SSID出现
        WifiConfiguration tempConfig = wifiAdmin.IsExsits(SSID);  
        if (tempConfig != null) {  
        settingWifiAdmin.wifiManager.removeNetwork(tempConfig.networkId);   
        }  
          
        // 分为三种情况:没有密码   用wep加密  用wpa加密  
        if (type == SECURITY_NONE) {   // WIFICIPHER_NOPASS  
            config.wepKeys[0] = "";  
            config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);  
            config.wepTxKeyIndex = 0;   
              
        } else if (type == SECURITY_WEP) {  //  WIFICIPHER_WEP   
            config.hiddenSSID = true;  
            config.wepKeys[0] = """ + password + """;  
            config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.SHARED);  
            config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);  
            config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);  
            config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40);  
            config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104);  
            config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);  
            config.wepTxKeyIndex = 0;  

        } else if (type == SECURITY_PSK) {   // WIFICIPHER_WPA  
            config.preSharedKey = """ + password + """;  
            config.hiddenSSID = true;  
            config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);  
            config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);  
            config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);  
            config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);   
            config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);  
            config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);  
            config.status = WifiConfiguration.Status.ENABLED;  
        }            
        return config;  
    }      



解决办法:

  if(Type == WifiCipherType.WIFICIPHER_NOPASS)
      {
      config.hiddenSSID = true;  
//        config.wepKeys[0] = "";
        config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
//        config.wepTxKeyIndex = 0;
      }

把与wep有关的都注释掉就行了

相关文章
|
20天前
|
算法 安全 数据安全/隐私保护
Android经典实战之常见的移动端加密算法和用kotlin进行AES-256加密和解密
本文介绍了移动端开发中常用的数据加密算法,包括对称加密(如 AES 和 DES)、非对称加密(如 RSA)、散列算法(如 SHA-256 和 MD5)及消息认证码(如 HMAC)。重点讲解了如何使用 Kotlin 实现 AES-256 的加密和解密,并提供了详细的代码示例。通过生成密钥、加密和解密数据等步骤,展示了如何在 Kotlin 项目中实现数据的安全加密。
56 1
|
21天前
|
算法 安全 数据安全/隐私保护
Android经典实战之常见的移动端加密算法和用kotlin进行AES-256加密和解密
本文介绍了移动端开发中常用的数据加密算法,包括对称加密(如 AES 和 DES)、非对称加密(如 RSA)、散列算法(如 SHA-256 和 MD5)及消息认证码(如 HMAC)。重点展示了如何使用 Kotlin 实现 AES-256 的加密和解密,提供了详细的代码示例。
28 2
|
4月前
|
Android开发
Android 状态栏WiFi图标的显示逻辑
Android 状态栏WiFi图标的显示逻辑
109 0
|
4月前
|
Android开发
Android获取当前连接的wifi名称
Android获取当前连接的wifi名称
200 6
|
4月前
|
Android开发
android连接指定wifi
android连接指定wifi
70 0
|
4月前
|
Java Android开发
Android 9在连接以太网情况下 还能连接WiFi
Android 9在连接以太网情况下 还能连接WiFi
46 0
|
4月前
|
Android开发 Python
Python封装ADB获取Android设备wifi地址的方法
Python封装ADB获取Android设备wifi地址的方法
136 0
|
4月前
|
XML API Android开发
Android WIFI使用简述(上)
Android WIFI使用简述(上)
193 0
|
4月前
|
Java Android开发 开发者
rk3399 android以太网和wifi共存
rk3399 android以太网和wifi共存
150 0
|
4月前
|
缓存 Java Android开发
Android 9.0 WiFi 扫描结果上报和获取流程
Android 9.0 WiFi 扫描结果上报和获取流程
180 0