编写安卓app程序自动连接指定wifi

来源:互联网 发布:这就是命 网络歌手 编辑:程序博客网 时间:2024/05/21 10:35

//activity_main.xml:

<AbsoluteLayout    android:layout_width="fill_parent"    android:layout_height="fill_parent"    xmlns:android="http://schemas.android.com/apk/res/android" />

//AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.example.lu.connect" ><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>    <application        android:allowBackup="true"        android:icon="@mipmap/ic_launcher"        android:label="@string/app_name"        android:supportsRtl="true"        android:theme="@style/AppTheme" >        <activity            android:name=".MainActivity"            android:label="@string/app_name"            android:theme="@style/AppTheme.NoActionBar" >            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>    </application></manifest>


//WifiAdmin.java:

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 java.util.List;/** * Created by lu on 2016/1/31. */public class WifiAdmin {    private WifiManager mWifiManager;    // 定义WifiInfo对象private WifiInfo mWifiInfo;// 扫描出的网络连接列表private List<ScanResult> mWifiList;// 网络连接列表private List<WifiConfiguration> mWifiConfiguration;// 定义一个WifiLockWifiManager.WifiLock mWifiLock;// 构造器  public WifiAdmin(Context context) {  // 取得WifiManager对象 mWifiManager = (WifiManager) context    .getSystemService(Context.WIFI_SERVICE);    // 取得WifiInfo对象mWifiInfo = mWifiManager.getConnectionInfo();}    // 打开WIFIpublic void openWifi() { if (!mWifiManager.isWifiEnabled()) {mWifiManager.setWifiEnabled(true);   }}  // 关闭WIFIpublic 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) //WIFICIPHER_NOPASS                    {                          config.wepKeys[0] = "";                     config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);                         config.wepTxKeyIndex = 0;                }                 if(Type == 2) //WIFICIPHER_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) //WIFICIPHER_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;       }}




//MainActivity.java:

import android.app.Activity;import android.os.Bundle;public class MainActivity extends Activity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        WifiAdmin wifiAdmin = new WifiAdmin(this);         wifiAdmin.openWifi();         wifiAdmin.addNetwork(wifiAdmin.CreateWifiInfo("KFC", "12345678", 3));    }}

0 1
原创粉丝点击