### 概述
實現連接WIFI的功能會用到一個工具類,源碼可以點擊鏈接下載。網上這些類似的工具類里的代碼差不多是一樣的。連接無線網主要有兩個方法:
其中有一個Connect方法,還有一個connectSpecificAP方法,對于不需要密碼就能鏈接的WIFI模塊,我使用的是后者。
### 主要步驟
連接WIFI大致分為一下幾個步驟:
【1】打開WIFI
openWifi
【2】配置網絡信息
createWifiInfo返回WIFiConfig
【3】添加配置好的網絡并連接
int netID = mWifiManager.addNetwork(wifiConfig);
boolean bRet = mWifiManager.enableNetwork(netID, false);
【4】判斷連接是否成功
上面的enableNetWork方法返回成功并不能反映手機是否真的連接成功,所以還需要調用isConnect方法進行判斷,針對自己的業務邏輯和場景,我又寫了一個判斷是否連接成功的方法:isWifiConnected的方法
### 應用
~~~
/**
* 手機接入模塊的WIFI網絡——BLACKANTS
*/
private void ConnectDisplay(){
//獲得消息對象
Message msg=mainHandler.obtainMessage();
//是否連接成功的一個標記
Boolean isConnected=false;
//標志BLACKANTS的ScanResult是否存在,true存在,false不存在
Boolean isExist=false;
//用戶存放BLACKANTS的WIFI信息
ScanResult srWifiInfo=null;
//聲明一個用于臨時存放SSID的變量
String strTempSSID;
/******************以下一段代碼主要是為了獲得BLACKANTS的ScanResult(包括了它的SSID,BSSID,capabilities)*****************/
//掃描WIFI
wifiAdmin.startScan();
//獲得WIFI列表
List<ScanResult> lstWiFi= wifiAdmin.getWifiList();
//如果WIFI列表為空,則說明WIFI開關未打開,向Handler發送消息
if(lstWiFi==null || lstWiFi.size()==0){
msg.what=NotOpen;
mainHandler.sendMessage(msg);
return;
}
//如果列表存在,則對列表進行遍歷
if(lstWiFi!=null & lstWiFi.size()>0){
//遍歷列表,查看BLACKANTS是否存在
for(int i=0;i<lstWiFi.size();i++){
strTempSSID=lstWiFi.get(i).SSID;
//如果存在,則退出For循環
if((DisplaySSID).equals(strTempSSID.trim()) ){
//修改標志位為存在
isExist=true;
//將BLACKANTS的Wifi信息放入到變量srWifiInfo中
srWifiInfo=lstWiFi.get(i);
break;
}
}
}
/******************以上一段代碼主要是為了獲得BLACKANTS的ScanResult(包括了它的SSID,BSSID,capabilities)*****************/
//默認是失敗
msg.what=Failure;
//如果存在,則讓手機接入BLACKANTS-------------------V1.0
if(isExist){
if(wifiAdmin.connectSpecificAP(srWifiInfo)){
//判斷是否連接上
if(wifiAdmin.isWifiConnected(InitActivity.this,DisplaySSID)){
msg.what=Success;
}
}
}
mainHandler.sendMessage(msg);
}
~~~
### 附:
[下載工具類(WIFIAdmin)](http://download.csdn.net/detail/u010924834/9271281)