Android WIFI 聯接不加密熱點總是失敗 addNetwork總是返回-1
阿新 • • 發佈:2019-01-08
問題:連線加密的熱點 就可以連線,連線不加密的熱點不能連線。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有關的都註釋掉就行了