功能实现:控制wifi开关,连上某个特定的wifi。
首先先上个wifi工具类,此类转载网上一人,出处不明了。
package rodar.rgs.conference.utils;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.net.InetAddress;
import java.util.ArrayList;
import java.util.List;
import android.net.wifi.ScanResult;
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;
}
System.out.println(">>>wifiCon=");
//开启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);
}
// try {
// //高级选项
// String ip ="192.168.1.201";
// int networkPrefixLength =24;
// InetAddress intetAddress = InetAddress.getByName(ip);
// int intIp = inetAddressToInt(intetAddress);
// String dns = (intIp & 0xFF ) + "." + ((intIp >> 8 ) & 0xFF) + "." + ((intIp >> 16 ) & 0xFF) + ".1";
// setIpAssignment("STATIC", wifiConfig); //"STATIC" or "DHCP" for dynamic setting
// setIpAddress(intetAddress, networkPrefixLength, wifiConfig);
// setGateway(InetAddress.getByName(dns), wifiConfig);
// setDNS(InetAddress.getByName(dns), wifiConfig);
// } catch (Exception e) {
// // TODO: handle exception
// e.printStackTrace();
// }
int netID = wifiManager.addNetwork(wifiConfig);
boolean bRet = wifiManager.enableNetwork(netID, true);
// wifiManager.updateNetwork(wifiConfig);
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;
}
pr