代码是借鉴别人写的:
http://blog.csdn.net/cxlmax/article/details/7827102
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
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"/>