自动连接指定wifi无密码方式错误解决办法.docx
《自动连接指定wifi无密码方式错误解决办法.docx》由会员分享,可在线阅读,更多相关《自动连接指定wifi无密码方式错误解决办法.docx(12页珍藏版)》请在冰豆网上搜索。
自动连接指定wifi无密码方式错误解决办法
自动连接指定wifi(无密码方式错误)
/**
* 网上好多自动连接WIFI的资料都同一个错误,估计大家都是抄的吧,但是都有一个问题,那就是无密码方式连接不上,后来终于找到解决办法,给大家共享一下
*/
packagecom.wells.tool;
importjava.util.List;
importcom.wells.activity.HomeActivity;
importandroid.content.Context;
import.wifi.ScanResult;
import.wifi.WifiConfiguration;
import.wifi.WifiInfo;
import.wifi.WifiManager;
import.wifi.WifiManager.WifiLock;
importandroid.util.Log;
/**
*打开WIFI,自动连接wells网络
*
*@authorliuyanping
*
* 2014年7月18日
*/
publicclassOpenWifi{
//定义WifiManager对象
publicWifiManagermWifiManager;
//定义WifiInfo对象
privateWifiInfomWifiInfo;
//扫描出的网络连接列表
privateListmWifiList;
//网络连接列表
privateListmWifiConfiguration;
//定义一个WifiLock
WifiLockmWifiLock;
/**
*构造器
*/
publicOpenWifi(Contextcontext){
//取得WifiManager对象
mWifiManager=(WifiManager)context
.getSystemService(Context.WIFI_SERVICE);
//取得WifiInfo对象
mWifiInfo=mWifiManager.getConnectionInfo();
}
/**
*打开WIFI
*/
publicvoidopenWifi(){
if(!
mWifiManager.isWifiEnabled()){
mWifiManager.setWifiEnabled(true);
}
}
/**
*关闭WIFI
*/
publicvoidcloseWifi(){
if(mWifiManager.isWifiEnabled()){
mWifiManager.setWifiEnabled(false);
}
}
/**
*检查当前WIFI状态
*
*@return
*/
publicintcheckState(){
returnmWifiManager.getWifiState();
}
/**
*锁定WifiLock
*/
publicvoidacquireWifiLock(){
mWifiLock.acquire();
}
/**
*解锁WifiLock
*/
publicvoidreleaseWifiLock(){
//判断时候锁定
if(mWifiLock.isHeld()){
mWifiLock.acquire();
}
}
/**
*创建一个WifiLock
*/
publicvoidcreatWifiLock(){
mWifiLock=mWifiManager.createWifiLock("Test");
}
/**
*得到配置好的网络
*
*@return
*/
publicListgetConfiguration(){
returnmWifiConfiguration;
}
/**
*提供一个外部接口,传入要连接的无线网
*
*@paramssid
*@parampassword
*@paramtype
*/
publicvoidconnect(Stringssid,Stringpassword,inttype){
Threadthread=newThread(newConnectRunnable(ssid,password,type));
thread.start();
}
classConnectRunnableimplementsRunnable{
privatestaticfinalStringTAG="ConnectRunnable====";
privateStringssid;
privateStringpassword;
privateinttype;
publicConnectRunnable(Stringssid,Stringpassword,inttype){
this.ssid=ssid;
this.password=password;
this.type=type;
}
@Override
publicvoidrun(){
//打开wifi
openWifi();
//开启wifi功能需要一段时间(我在手机上测试一般需要1-3秒左右),所以要等到wifi
//状态变成WIFI_STATE_ENABLED的时候才能执行下面的语句
while(mWifiManager.getWifiState()==WifiManager.WIFI_STATE_ENABLING){
try{
//为了避免程序一直while循环,让它睡个100毫秒检测……
Thread.sleep(100);
}catch(InterruptedExceptionie){
}
}
WifiConfigurationwifiConfig=CreateWifiInfo(ssid,password,type);
//
if(wifiConfig==null){
Log.d(TAG,"wifiConfigisnull!
");
return;
}
WifiConfigurationtempConfig=IsExsits(ssid);
if(tempConfig!
=null){
mWifiManager.removeNetwork(tempCworkId);
}
intnetID=mWifiManager.addNetwork(wifiConfig);
booleanenabled=mWifiManager.enableNetwork(netID,true);
Log.d(TAG,"enableNetworkstatusenable="+enabled);
booleanconnected=mWifiManager.reconnect();
Log.d(TAG,"enableNetworkconnected="+connected);
}
}
/**
*指定配置好的网络进行连接
*
*@paramindex
*/
publicvoidconnectConfiguration(intindex){
//索引大于配置好的网络索引返回
if(index>mWifiConfiguration.size()){
return;
}
//连接配置好的指定ID的网络
mWifiManager.enableNetwork(mWifiConfiguration.get(index).networkId,
true);
}
publicvoidstartScan(){
mWifiManager.startScan();
//得到扫描结果
mWifiList=mWifiManager.getScanResults();
//得到配置好的网络连接
mWifiConfiguration=mWifiManager.getConfiguredNetworks();
}
/**
*得到网络列表
*/
publicListgetWifiList(){
returnmWifiList;
}
/**
*查看扫描结果
*
*@return
*/
publicStringBuilderlookUpScan(){
StringBuilderstringBuilder=newStringBuilder();
for(inti=0;istringBuilder
.append("Index_"+newInteger(i+1).toString()+":
");
//将ScanResult信息转换成一个字符串包
//其中把包括:
BSSID、SSID、capabilities、frequency、level
stringBuilder.append((mWifiList.get(i)).toString());
stringBuilder.append("/n");
}
returnstringBuilder;
}
/**
*得到MAC地址
*
*@return
*/
publicStringgetMacAddress(){
return(mWifiInfo==null)?
"NULL":
mWifiInfo.getMacAddress();
}
/**
*得到接入点的BSSID
*
*@return
*/
publicStringgetBSSID(){
return(mWifiInfo==null)?
"NULL":
mWifiInfo.getBSSID();
}
/**
*得到IP地址
*
*@return
*/
publicintgetIPAddress(){
return(mWifiInfo==null)?
0:
mWifiInfo.getIpAddress();
}
/**
*得到连接的ID
*
*@return
*/
publicintgetNetworkId(){
return(mWifiInfo==null)?
0:
mWifiInfo.getNetworkId();
}
/**
*得到WifiInfo的所有信息包
*
*@return
*/
publicStringgetWifiInfo(){
return(mWifiInfo==null)?
"NULL":
mWifiInfo.toString();
}
/**
*添加一个网络并连接
*
*@paramwcg
*/
publicv