WifiApAdmin.java

package home.mft;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import java.util.Timer;import java.util.TimerTask;import android.content.Context;import android.net.wifi.WifiConfiguration;import android.net.wifi.WifiManager;import android.util.Log;public class WifiApAdmin {public static final String TAG = "WifiApAdmin";public static void closeWifiAp(Context context) {WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); closeWifiAp(wifiManager);}private WifiManager mWifiManager = null;private Context mContext = null;public WifiApAdmin(Context context) {mContext = context;mWifiManager = (WifiManager) mContext.getSystemService(Context.WIFI_SERVICE);  closeWifiAp(mWifiManager);}private String mSSID = "";private String mPasswd = "";public void startWifiAp(String ssid, String passwd) {mSSID = ssid;mPasswd = passwd;if (mWifiManager.isWifiEnabled()) {mWifiManager.setWifiEnabled(false);} stratWifiAp();MyTimerCheck timerCheck = new MyTimerCheck() {@Overridepublic void doTimerCheckWork() {// TODO Auto-generated method stubif (isWifiApEnabled(mWifiManager)) {Log.v(TAG, "Wifi enabled success!");this.exit();} else {Log.v(TAG, "Wifi enabled failed!");}}@Overridepublic void doTimeOutWork() {// TODO Auto-generated method stubthis.exit();}};timerCheck.start(15, 1000);}public void stratWifiAp() {Method method1 = null;try {method1 = mWifiManager.getClass().getMethod("setWifiApEnabled",WifiConfiguration.class, boolean.class);WifiConfiguration netConfig = new WifiConfiguration();netConfig.SSID = mSSID;netConfig.preSharedKey = mPasswd;netConfig.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);netConfig.allowedProtocols.set(WifiConfiguration.Protocol.RSN);netConfig.allowedProtocols.set(WifiConfiguration.Protocol.WPA);netConfig.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);netConfig.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);netConfig.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);netConfig.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);netConfig.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);method1.invoke(mWifiManager, netConfig, true);} catch (IllegalArgumentException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IllegalAccessException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (InvocationTargetException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (SecurityException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (NoSuchMethodException e) {// TODO Auto-generated catch blocke.printStackTrace();}}private static void closeWifiAp(WifiManager wifiManager) {if (isWifiApEnabled(wifiManager)) {try {Method method = wifiManager.getClass().getMethod("getWifiApConfiguration");method.setAccessible(true);WifiConfiguration config = (WifiConfiguration) method.invoke(wifiManager);Method method2 = wifiManager.getClass().getMethod("setWifiApEnabled", WifiConfiguration.class, boolean.class);method2.invoke(wifiManager, config, false);} catch (NoSuchMethodException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IllegalArgumentException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IllegalAccessException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (InvocationTargetException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}private static boolean isWifiApEnabled(WifiManager wifiManager) {try {Method method = wifiManager.getClass().getMethod("isWifiApEnabled");method.setAccessible(true);return (Boolean) method.invoke(wifiManager);} catch (NoSuchMethodException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (Exception e) {e.printStackTrace();}return false;}}

MyTimerCheck.java

package home.mft;public abstract class MyTimerCheck {private int mCount = 0;private int mTimeOutCount = 1;private int mSleepTime = 1000; // 1sprivate boolean mExitFlag = false;private Thread mThread = null;/** * Do not process UI work in this. */public abstract void doTimerCheckWork();public abstract void doTimeOutWork();public MyTimerCheck() {mThread = new Thread(new Runnable() {public void run() {// TODO Auto-generated method stubwhile (!mExitFlag) {mCount++;if (mCount < mTimeOutCount) {doTimerCheckWork();try {mThread.sleep(mSleepTime);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();exit();}} else {doTimeOutWork();}}}});}/** * start * @param times  How many times will check? * @param sleepTime ms, Every check sleep time. */public void start(int timeOutCount, int sleepTime) {mTimeOutCount = timeOutCount;mSleepTime = sleepTime;mThread.start();}public void exit() {mExitFlag = true;}}

然后是调用 HomeIndex.java

package home.mft;import hotspot.mft.R;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import android.app.Activity;import android.content.Context;import android.net.wifi.WifiConfiguration;import android.net.wifi.WifiManager;import android.os.Bundle;import android.view.View;import android.widget.Button;public class HomeIndex extends Activity {private Button button1;    /** Called when the activity is first created. */private Context mContext = null;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        mContext = HomeIndex.this;        setContentView(R.layout.main);        button1 = (Button)findViewById(R.id.button1);        button1.setOnClickListener(new View.OnClickListener() {public void onClick(View v) {// TODO Auto-generated method stubWifiApAdmin wifiAp = new WifiApAdmin(mContext);wifiAp.startWifiAp("mftAP", "123456789");//\}});                //\\    }}

manifest 权限

    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" ></uses-permission>    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" ></uses-permission>    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" ></uses-permission>    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" ></uses-permission><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission><uses-permission android:name="android.permission.INTERNET"></uses-permission><uses-permission android:name="android.permission.ACCES_MOCK_LOCATION"></uses-permission> 

更多相关文章

  1. Android 权限全集
  2. Android中通过代码检测系统是否有root权限
  3. android 9.0 SD卡权限问题 文件管理器没有权限
  4. 关于Android动态权限的一些疑问
  5. Android 网络权限配置
  6. Android App 权限一点知识
  7. android app请求获取root权限
  8. Android 权限控制代码分析

随机推荐

  1. android launcher 全面解析
  2. Android高级编程.
  3. android BaseAdapter 自定义适配器 BaseA
  4. android中Sensor 工作流程
  5. android 编译问题
  6. Android性能优化
  7. 增加按键音
  8. getApplicationContext()与this,getBaseC
  9. android实现自定义顶部标题栏
  10. Unity打Android包报错总结