给定App相应SSID及密码,连接指定WIFI。

Demo下载地址http://download.csdn.net/detail/ericfantastic/9092739

1、MainActivity.java包含工具类WifiAdmin

package com.example.connectwifi;import java.util.List;import android.app.Activity;import android.content.Context;import android.net.wifi.ScanResult;import android.net.wifi.WifiConfiguration;import android.net.wifi.WifiInfo;import android.net.wifi.WifiManager;import android.net.wifi.WifiManager.WifiLock;import android.os.Bundle;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);WifiAdmin wa = new WifiAdmin(this);wa.openWifi();wa.addNetwork(wa.CreateWifiInfo("CMM-687", "11223344", 3));}public class WifiAdmin {     // 定义WifiManager对象      private WifiManager mWifiManager;     // 定义WifiInfo对象      private WifiInfo mWifiInfo;     // 扫描出的网络连接列表      private List<ScanResult> mWifiList;     // 网络连接列表      private List<WifiConfiguration> mWifiConfiguration;     // 定义一个WifiLock      WifiLock mWifiLock;      //构造函数      public WifiAdmin(Context context) {         // 取得WifiManager对象          mWifiManager = (WifiManager) context                 .getSystemService(Context.WIFI_SERVICE);         // 取得WifiInfo对象          mWifiInfo = mWifiManager.getConnectionInfo();     }      // 打开WIFI      public void openWifi() {         if (!mWifiManager.isWifiEnabled()) {             mWifiManager.setWifiEnabled(true);         }     }      // 关闭WIFI      public void closeWifi() {         if (mWifiManager.isWifiEnabled()) {             mWifiManager.setWifiEnabled(false);         }     }      // 检查当前WIFI状态      public int checkState() {         return mWifiManager.getWifiState();     }      // 锁定WifiLock      public void acquireWifiLock() {         mWifiLock.acquire();     }      // 解锁WifiLock      public void releaseWifiLock() {         // 判断时候锁定          if (mWifiLock.isHeld()) {             mWifiLock.acquire();         }     }      // 创建一个WifiLock      public void creatWifiLock() {         mWifiLock = mWifiManager.createWifiLock("Test");     }      // 得到配置好的网络      public List<WifiConfiguration> getConfiguration() {         return mWifiConfiguration;     }      // 指定配置好的网络进行连接      public void connectConfiguration(int index) {         // 索引大于配置好的网络索引返回          if (index > mWifiConfiguration.size()) {             return;         }         // 连接配置好的指定ID的网络          mWifiManager.enableNetwork(mWifiConfiguration.get(index).networkId,                 true);     }      public void startScan() {         mWifiManager.startScan();         // 得到扫描结果          mWifiList = mWifiManager.getScanResults();         // 得到配置好的网络连接          mWifiConfiguration = mWifiManager.getConfiguredNetworks();     }      // 得到网络列表      public List<ScanResult> getWifiList() {         return mWifiList;     }      // 查看扫描结果      public StringBuilder lookUpScan() {         StringBuilder stringBuilder = new StringBuilder();         for (int i = 0; i < mWifiList.size(); i++) {             stringBuilder                     .append("Index_" + new Integer(i + 1).toString() + ":");             // 将ScanResult信息转换成一个字符串包              // 其中把包括:BSSID、SSID、capabilities、frequency、level              stringBuilder.append((mWifiList.get(i)).toString());             stringBuilder.append("/n");         }         return stringBuilder;     }     // 得到MAC地址      public String getMacAddress() {         return (mWifiInfo == null) ? "NULL" : mWifiInfo.getMacAddress();     }      // 得到接入点的BSSID      public String getBSSID() {         return (mWifiInfo == null) ? "NULL" : mWifiInfo.getBSSID();     }      // 得到IP地址      public int getIPAddress() {         return (mWifiInfo == null) ? 0 : mWifiInfo.getIpAddress();     }      // 得到连接的ID      public int getNetworkId() {         return (mWifiInfo == null) ? 0 : mWifiInfo.getNetworkId();     }      // 得到WifiInfo的所有信息包      public String getWifiInfo() {         return (mWifiInfo == null) ? "NULL" : mWifiInfo.toString();     }      // 添加一个网络并连接      public void addNetwork(WifiConfiguration wcg) {  int wcgID = mWifiManager.addNetwork(wcg);      boolean b =  mWifiManager.enableNetwork(wcgID, true);      System.out.println("a--" + wcgID);     System.out.println("b--" + b);    }      // 断开指定ID的网络      public void disconnectWifi(int netId) {         mWifiManager.disableNetwork(netId);         mWifiManager.disconnect();     }  //然后是一个实际应用方法,只验证过没有密码的情况:     public WifiConfiguration CreateWifiInfo(String SSID, String Password, int Type)     {           WifiConfiguration config = new WifiConfiguration();              config.allowedAuthAlgorithms.clear();            config.allowedGroupCiphers.clear();            config.allowedKeyManagement.clear();            config.allowedPairwiseCiphers.clear();            config.allowedProtocols.clear();           config.SSID = "\"" + SSID + "\"";                       WifiConfiguration tempConfig = this.IsExsits(SSID);                     if(tempConfig != null) {            mWifiManager.removeNetwork(tempConfig.networkId);            }                    if(Type == 1) //没有密码的情况          {                config.wepKeys[0] = "";                config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);                config.wepTxKeyIndex = 0;           }           if(Type == 2) //WEP加密的情况          {               config.hiddenSSID = true;              config.wepKeys[0]= "\""+Password+"\"";               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 == 3) //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.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);          config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);          config.status = WifiConfiguration.Status.ENABLED;             }           return config;     }         private WifiConfiguration IsExsits(String SSID)      {          List<WifiConfiguration> existingConfigs = mWifiManager.getConfiguredNetworks();             for (WifiConfiguration existingConfig : existingConfigs)              {               if (existingConfig.SSID.equals("\""+SSID+"\""))               {                   return existingConfig;               }             }          return null;       }  }}
2、Manifest.xml添加对应权限

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.example.connectwifi"    android:versionCode="1"    android:versionName="1.0" >    <uses-sdk        android:minSdkVersion="14"        android:targetSdkVersion="14" />    <application        android:allowBackup="true"        android:icon="@drawable/ic_launcher"        android:label="@string/app_name"        android:theme="@style/AppTheme" >        <activity            android:name=".MainActivity"            android:label="@string/app_name" >            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>    </application>        <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>     <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/></manifest>




更多相关文章

  1. android实现异网双卡双待识别运营商网络
  2. android 判断网络连接、sim卡信息以及ping操作是否网络连接正常
  3. android 多媒体部分学习十四---网络视频播放(http/rtsp)

随机推荐

  1. 如何设置动画以使元素围绕圆圈移动?
  2. 通过切换a. localecompare (b) to (ab?1:
  3. 在Angular服务中使用$ http作为json数据
  4. JSON.parse(xhr.responseText)意外的字符串
  5. [jQuery知识]jQuery之知识四-DOM和CSS操
  6. 与jQuery ajax post方法相比,fetch方法没
  7. JavaScript中可见性检查的测试条件
  8. EasyUI-datagrid表格(基本使用)
  9. bootstrap入门【按钮式下拉菜单,输入框组
  10. JavaScript 函数柯里化(参考《JavaScript