android 程序连接指定wifi

定义WifiConnect类


package com.example.wifimanager;

import java.util.List;


import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiManager;
import android.util.Log;
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(10);
          }
          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 =false;
   
    bRet= wifiManager.enableNetwork(netID, true);  
    //wifiManager.disconnect();
    wifiManager.reconnect();
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.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP); 
    config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
    config.status = WifiConfiguration.Status.ENABLED;  
    }
    else
    {
    return null;
    }
    return config;
    }
    

}


调用WifiConnect

wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
WifiConnect wc=new WifiConnect(wifiManager);
boolean flage=wc.Connect("TP-LINK_318", "201331804", WifiCipherType.WIFICIPHER_WPA);


在manifest.xml中加入

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-feature android:name="android.hardware.wifi" />


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值