android 自动连接指定wifi androidnetworkwifi 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 package com.uhuibao.wificonnect;import java.util.List;import android.net.wifi.WifiConfiguration;import android.net.wifi.WifiManager;public class WifiConnect { WifiManager wifiManager; // 定义几种加密方式,一种是WEP,一种是WPA,还有没有密码的情况 public enum WifiCipherType { WIFICIPHER_WEP, WIFICIPHER_WPA, WIFICIPHER_NOPASS, WIFICIPHER_INVALID } // 构造函数 public WifiConnect(WifiManager wifiManager) { this.wifiManager = wifiManager; } // 打开wifi功能 private boolean OpenWifi() { boolean bRet = true; if (!wifiManager.isWifiEnabled()) { bRet = wifiManager.setWifiEnabled(true); } return bRet; } // 提供一个外部接口,传入要连接的无线网 public boolean Connect(String SSID, String Password, WifiCipherType Type) { if (!this.OpenWifi()) { return false; } // 开启wifi功能需要一段时间(我在手机上测试一般需要1-3秒左右),所以要等到wifi // 状态变成WIFI_STATE_ENABLED的时候才能执行下面的语句 while (wifiManager.getWifiState() == WifiManager.WIFI_STATE_ENABLING) { try { // 为了避免程序一直while循环,让它睡个100毫秒在检测…… Thread.currentThread(); Thread.sleep(100); } catch (InterruptedException ie) { } } WifiConfiguration wifiConfig = this .CreateWifiInfo(SSID, Password, Type); // if (wifiConfig == null) { return false; } WifiConfiguration tempConfig = this.IsExsits(SSID); if (tempConfig != null) { wifiManager.removeNetwork(tempConfig.networkId); } int netID = wifiManager.addNetwork(wifiConfig); boolean bRet = wifiManager.enableNetwork(netID, false); return bRet; } // 查看以前是否也配置过这个网络 private WifiConfiguration IsExsits(String SSID) { List<WifiConfiguration> existingConfigs = wifiManager .getConfiguredNetworks(); for (WifiConfiguration existingConfig : existingConfigs) { if (existingConfig.SSID.equals("\"" + SSID + "\"")) { return existingConfig; } } return null; } private WifiConfiguration CreateWifiInfo(String SSID, String Password, WifiCipherType Type) { WifiConfiguration config = new WifiConfiguration(); config.allowedAuthAlgorithms.clear(); config.allowedGroupCiphers.clear(); config.allowedKeyManagement.clear(); config.allowedPairwiseCiphers.clear(); config.allowedProtocols.clear(); config.SSID = "\"" + SSID + "\""; if (Type == WifiCipherType.WIFICIPHER_NOPASS) { config.wepKeys[0] = ""; config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE); config.wepTxKeyIndex = 0; } if (Type == WifiCipherType.WIFICIPHER_WEP) { config.preSharedKey = "\"" + Password + "\""; config.hiddenSSID = true; 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; } if (Type == WifiCipherType.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.allowedProtocols.set(WifiConfiguration.Protocol.WPA); config.status = WifiConfiguration.Status.ENABLED; } else { return null; } return config; }} 调用方法 WifiManager wifiManager=(WifiManager)getSystemService(Context.WIFI_SERVICE); WifiConnect wifi=new WifiConnect(wifiManager); wifi.Connect("uhuibao.com", "uhb_1q2w3e",WifiCipherType.WIFICIPHER_WPA); 好像与设备有关。我的lenovo可三星机器不可以 请问楼主,问题解决了么?我也是wep加密连不上。。 WPA返回的是true但是没有连上,只是把原先连接的wifi给断开了。没有加密的情况下返回的false 求解 一定要先调用disconnect(),再调用reconnect() 求教下拉更新和上推更多的控件 android 开发程序同时适用于平板和手机要注意什么 为什么Android手机异地GPRS无法使用?该如何调试? ViewGroup使用Adapter android jni 问题 android按钮单击问题 加载GridView问题 将 sqlite 和 autocompletetextview联系时出现的问题 第一次发帖就是求助帖,不知道有人能解决一下不 大神求教 android软件开发 软件换肤的一些问题 关于AlertDialog显示至屏幕底部的显示问题
package com.uhuibao.wificonnect;import java.util.List;import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiManager;public class WifiConnect { WifiManager wifiManager; // 定义几种加密方式,一种是WEP,一种是WPA,还有没有密码的情况
public enum WifiCipherType {
WIFICIPHER_WEP, WIFICIPHER_WPA, WIFICIPHER_NOPASS, WIFICIPHER_INVALID
} // 构造函数
public WifiConnect(WifiManager wifiManager) {
this.wifiManager = wifiManager;
} // 打开wifi功能
private boolean OpenWifi() {
boolean bRet = true;
if (!wifiManager.isWifiEnabled()) {
bRet = wifiManager.setWifiEnabled(true);
}
return bRet;
} // 提供一个外部接口,传入要连接的无线网
public boolean Connect(String SSID, String Password, WifiCipherType Type) {
if (!this.OpenWifi()) {
return false;
}
// 开启wifi功能需要一段时间(我在手机上测试一般需要1-3秒左右),所以要等到wifi
// 状态变成WIFI_STATE_ENABLED的时候才能执行下面的语句
while (wifiManager.getWifiState() == WifiManager.WIFI_STATE_ENABLING) {
try {
// 为了避免程序一直while循环,让它睡个100毫秒在检测……
Thread.currentThread();
Thread.sleep(100);
} catch (InterruptedException ie) {
}
} WifiConfiguration wifiConfig = this
.CreateWifiInfo(SSID, Password, Type);
//
if (wifiConfig == null) {
return false;
} WifiConfiguration tempConfig = this.IsExsits(SSID); if (tempConfig != null) {
wifiManager.removeNetwork(tempConfig.networkId);
} int netID = wifiManager.addNetwork(wifiConfig);
boolean bRet = wifiManager.enableNetwork(netID, false);
return bRet;
} // 查看以前是否也配置过这个网络
private WifiConfiguration IsExsits(String SSID) {
List<WifiConfiguration> existingConfigs = wifiManager
.getConfiguredNetworks();
for (WifiConfiguration existingConfig : existingConfigs) {
if (existingConfig.SSID.equals("\"" + SSID + "\"")) {
return existingConfig;
}
}
return null;
} private WifiConfiguration CreateWifiInfo(String SSID, String Password,
WifiCipherType Type) {
WifiConfiguration config = new WifiConfiguration();
config.allowedAuthAlgorithms.clear();
config.allowedGroupCiphers.clear();
config.allowedKeyManagement.clear();
config.allowedPairwiseCiphers.clear();
config.allowedProtocols.clear();
config.SSID = "\"" + SSID + "\"";
if (Type == WifiCipherType.WIFICIPHER_NOPASS) {
config.wepKeys[0] = "";
config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
config.wepTxKeyIndex = 0;
}
if (Type == WifiCipherType.WIFICIPHER_WEP) {
config.preSharedKey = "\"" + Password + "\"";
config.hiddenSSID = true;
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;
}
if (Type == WifiCipherType.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.allowedProtocols.set(WifiConfiguration.Protocol.WPA);
config.status = WifiConfiguration.Status.ENABLED;
} else {
return null;
}
return config;
}}
WifiManager wifiManager=(WifiManager)getSystemService(Context.WIFI_SERVICE);
WifiConnect wifi=new WifiConnect(wifiManager);
wifi.Connect("uhuibao.com", "uhb_1q2w3e",WifiCipherType.WIFICIPHER_WPA);