Android 监听wifi总结

这篇博客介绍了如何在Android中实现WiFi的开关控制以及连接特定WiFi的功能。通过提供的WiFi工具类,可以设置强制连接到指定的WiFi网络,即使设备之前已连接到其他网络。同时,文中提到了广播接收器的使用,以便监听WiFi状态的变化。
摘要由CSDN通过智能技术生成

功能实现:控制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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值