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(安卓)Camera 使用小结
  2. onSaveInstanceState和onRestoreInstanceState触发的时机
  3. Android切换横屏竖屏生命周期变化
  4. android录音和得到音量
  5. android 拨号
  6. Android深入浅出之Binder机制
  7. android 随手记 SQLITE代码 直接能用
  8. android视频截图
  9. android实现拨打电话

随机推荐

  1. VS Code的Golang插件现在由Go团队维护
  2. 从Java EE到Jakarta EE,最终过渡版本发布
  3. 马化腾每天刷题?代码你打算写到几岁?
  4. GNOME Mutter的代码清理工作将促进支持Vu
  5. 又说骚话,Linus再次拒绝Intel CPU漏洞补丁
  6. 不出意外的话,Go泛型终于要引入了
  7. .NET IDE Rider公布2020.2路线图
  8. Chrome团队:2020年了,浏览器兼容性还是一个
  9. 除了域名,Chrome或将隐藏整个URL
  10. 猎鹰与龙飞船基于Linux,采用C++、Chromium