打开android手机的wifi热点

代码是借鉴别人写的: http://blog.csdn.net/cxlmax/article/details/7827102
package com.huang.fashtranslate;

import android.annotation.SuppressLint;
import android.content.Context;
import android.net.wifi.WifiManager;
import android.os.Handler;
import android.os.Message;

public class MyWifi {

	private WifiManager wifiManager;
	private Handler handler, closeHandler;
	private CloseWifiThread closeWifiThread;
	private StartWifiThread startWifiThread;
	
	public MyWifi(Context context) {
		wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
	}
	
	@SuppressLint("HandlerLeak")
	public void startWifiHot() {
		handler = new Handler();
		if (wifiManager.isWifiEnabled()) {
			closeHandler = new Handler() {
				@Override
				public void handleMessage(Message msg) {
					startWifiThread();
				}
			};
			closeWifiThread = new CloseWifiThread();
			new Thread(closeWifiThread).start();
		} else {
			startWifiThread();
		}
	}
	
	private void startWifiThread() {
		startWifiThread = new StartWifiThread();
		new Thread(startWifiThread).start();
	}
	
	class StartWifiThread implements Runnable {
		@Override
		public void run() {
			WifiUtil wu = new WifiUtil();
			int state = wu.getWifi(wifiManager);
			System.out.println("state = " + state);
			switch(state) {
			case 11:
				wu.startWifi(wifiManager);
				handler.postDelayed(startWifiThread, 1000);
				break;
			case 12:
			case 14:
				handler.postDelayed(startWifiThread, 1000);
				break;
			case 13:
				System.out.println("开启移动热点成功");
				break;
			}
		}
	}
	
	class CloseWifiThread implements Runnable {
		@Override
		public void run() {
			int state = wifiManager.getWifiState();
			switch(state) {
				case WifiManager.WIFI_STATE_ENABLED:
					wifiManager.setWifiEnabled(false);
					closeHandler.postDelayed(closeWifiThread, 1000);
					break;
				case WifiManager.WIFI_STATE_DISABLING:
					closeHandler.postDelayed(closeWifiThread, 1000);
					break;
				case WifiManager.WIFI_STATE_DISABLED:
					closeHandler.sendEmptyMessage(0);
					break;
			}
		}
	}
}


package com.huang.fashtranslate;

import java.lang.reflect.Method;

import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiManager;

public class WifiUtil {

	private boolean DEBUG = false;
	
	public void startWifi(WifiManager wifiManager) {
		Method method = null;
		try {
			if (DEBUG) {
				Method[] methods = wifiManager.getClass().getDeclaredMethods();
				for (Method method1 : methods) {
					System.out.println(method1.getName());
				}
			}
			method = wifiManager.getClass().getDeclaredMethod("setWifiApEnabled", WifiConfiguration.class, boolean.class);
			WifiConfiguration config = new WifiConfiguration();
			config.SSID = "Dark-Light";
			config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);
			config.allowedProtocols.set(WifiConfiguration.Protocol.RSN);  
            config.allowedProtocols.set(WifiConfiguration.Protocol.WPA);  
            config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);  
            config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);  
            config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);  
            config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);  
            config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);  
            //密码  
            config.preSharedKey = "wuhanshi";  
            method.invoke(wifiManager, config, true);  
            System.out.println("good");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	public int getWifi(WifiManager wifiManager) {
		try {
			Method method = wifiManager.getClass().getMethod("getWifiApState");
			return (Integer) method.invoke(wifiManager);
		} catch (Exception e) {
			e.printStackTrace();
			return -1;
		}
		
	}
}


加权限

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


在android 4.x系统上通过测试
 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值