打开wifi热点以及连接wifi

添加权限

<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>

打开wifi热点:

package test.sam;


public class HelloanActivity extends Activity implements View.OnClickListener
{
	private TextView textView = null;
	private WifiManager wifiManager = null;
	
	public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        System.out.println("HelloanActivity -> oncreate!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
        setContentView(R.layout.main); 
        textView = (TextView)findViewById(R.id.main_TV);
        findViewById(R.id.main_button).setOnClickListener(this);
	}
	
    public void onClick(View v) 
    {
    	switch (v.getId()) {
		case R.id.main_button:
			try {
				wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
	            WifiConfiguration netConfig = new WifiConfiguration();
	            netConfig.SSID = "yoyo";
	            netConfig.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);
	            //通过反射调用设置热点  
	            Method method = wifiManager.getClass().getMethod(  
	                    "setWifiApEnabled", WifiConfiguration.class, Boolean.TYPE);  
	            //返回热点打开状态  
	           System.out.println("hotspot状态 = "+(Boolean) method.invoke(wifiManager, netConfig, true));
			} catch (Exception e) {
				e.printStackTrace();
			}
			
			break;
		default:
			break;
		}    	
    }
    
    public String GetIpAddress() {
        Enumeration<NetworkInterface> netInterfaces = null;
        try {
            netInterfaces = NetworkInterface.getNetworkInterfaces();
            while (netInterfaces.hasMoreElements()) {
                NetworkInterface ni = netInterfaces.nextElement();
                System.out.println("DisplayName:" + ni.getDisplayName());
                System.out.println("Name:" + ni.getName());
                Enumeration<InetAddress> ips = ni.getInetAddresses();
                while (ips.hasMoreElements()) {
                    InetAddress ip = ips.nextElement();
                    System.out.println(ip.getHostAddress()+"  "+ip.getHostName());
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "";
    }
  
}

连接wifi热点:

package test.sam.helloan2;

public class Helloan2Activity extends Activity implements View.OnClickListener
{
	
	private WifiManager wifiManager;  
    private StringBuilder sb;  
    private List<ScanResult> wifiList;  
    private WifiReceiver wifiReceiver;
    private WifiConfiguration wifiConfiguration = null;
	
	
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        findViewById(R.id.main_button).setOnClickListener(this);  
        findViewById(R.id.main_button2).setOnClickListener(this);
        wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);  
        wifiReceiver = new WifiReceiver();  
        registerReceiver(wifiReceiver, new IntentFilter(  
                WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));  
        wifiManager.startScan();
    }
    
    @Override
    public void finish() {
    	super.finish();
    	unregisterReceiver(wifiReceiver);
    }
    
    @Override
    public void onClick(View v) 
    {
    	switch (v.getId()) {
    	case R.id.main_button:
    		try {
    			System.out.println("click main button");
    			WifiConfiguration config = new WifiConfiguration();
                config.allowedAuthAlgorithms.clear();
                config.allowedGroupCiphers.clear();
                config.allowedKeyManagement.clear();
                config.allowedPairwiseCiphers.clear();
                config.allowedProtocols.clear();
                config.SSID = "\"yoyo\"";
                config.wepKeys[0] = "";
                config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
                config.wepTxKeyIndex = 0;
    			System.out.println("连接wifi = "+config.SSID);
    			int resId = wifiManager.addNetwork(config);  
    			boolean isSucc = wifiManager.enableNetwork(resId, true);
    			System.out.println("isSucc = "+isSucc);
			} catch (Exception e) {
				e.printStackTrace();
			}
    		
    		break;
    	case R.id.main_button2:
    		try {
    			WifiInfo wifiInfo = wifiManager.getConnectionInfo();
    			System.out.println("wifiInfo.getIpAddress() = "+wifiInfo.getIpAddress());
    			getLocalIpAddress();
			} catch (Exception e) {
				e.printStackTrace();
			}
    		
    		break;
		default:
			break;
		}
    }
    
    public  String getLocalIpAddress() {
    	try {
    	    for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {
    	        NetworkInterface intf = en.nextElement();
    	        for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) {
    	            InetAddress inetAddress = enumIpAddr.nextElement();
    	            System.out.println(inetAddress);
    	        }
    	    }
    	} catch (Exception ex) {
    	    ex.printStackTrace();
    	}
    	return null;
    	} 
    
    private final class WifiReceiver extends BroadcastReceiver {  
        @Override  
        public void onReceive(Context context, Intent intent) { 
        	if(wifiList == null)
        	{
        		List<WifiConfiguration> configurations = wifiManager.getConfiguredNetworks();
                for(WifiConfiguration configuration:configurations)
                {
               	 	System.out.println("configuration.SSID = "+configuration.SSID);
                	if(configuration.SSID.contains("samyoyo"));
                	{
                		wifiConfiguration = configuration;
                		break;
                	}
                }
                 
        	}else {
				System.out.println("get wifi!!");
			}
           
            
        }  
    }
  
   

}

网上看见别人封装了一个比较好的例子:( http://www.eoeandroid.com/thread-195120-1-1.html

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;
                }
 
                while (wifiManager.getWifiState() == WifiManager.WIFI_STATE_ENABLING) {
                        try {
                                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);
                }
 
                int netID = wifiManager.addNetwork(wifiConfig);
                boolean bRet = wifiManager.enableNetwork(netID, false);
                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.allowedProtocols.set(WifiConfiguration.Protocol.WPA);
                        config.status = WifiConfiguration.Status.ENABLED;
                } else {
                        return null;
                }
                return config;
        }
 
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值