Android连接wifi,调用系统API

Posted 请给我倒杯茶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android连接wifi,调用系统API相关的知识,希望对你有一定的参考价值。

本文转载自:http://blog.csdn.net/aaa1050070637/article/details/54136472

直接上代码,简单粗暴,一看就懂

 

[java] view plain copy
 
  1. import android.content.Context;  
  2. import android.net.ConnectivityManager;  
  3. import android.net.NetworkInfo;  
  4. import android.net.wifi.ScanResult;  
  5. import android.net.wifi.WifiConfiguration;  
  6. import android.net.wifi.WifiInfo;  
  7. import android.net.wifi.WifiManager;  
  8.   
  9. import android.util.Log;  
  10.   
  11. import java.util.List;  
  12.   
  13. /** 
  14.  * create 2016.12.29 
  15.  *  
  16.  * @author jack大漠 
  17.  *  
  18.  */  
  19. public class WifiConnect {  
  20.     private static final String SSID = "Sunlight";  
  21.     private static final String PASSWORD = "12345678";  
  22.     public static final String WIFI_IS_NOT_OPEN = "wifi is closed.";  
  23.     private static final String TAG = "vivi";  
  24.     public WifiManager mWifiManager = null;  
  25.     private Context mContext = null;  
  26.     private int mNetworkID = -1;  
  27.   
  28.     public WifiConnect(Context context) {  
  29.         this.mContext = context;  
  30.         mWifiManager = (WifiManager) context  
  31.                 .getSystemService(Context.WIFI_SERVICE);  
  32.     }  
  33.   
  34.     /** 
  35.      * 网络是否连接 
  36.      */  
  37.     public boolean isWifiConnected() {  
  38.         if (mContext != null) {  
  39.             ConnectivityManager mConnectivityManager = (ConnectivityManager) mContext  
  40.                     .getSystemService(Context.CONNECTIVITY_SERVICE);  
  41.             NetworkInfo mNetworkInfo = mConnectivityManager  
  42.                     .getActiveNetworkInfo();  
  43.             if (mNetworkInfo != null  
  44.                     && mNetworkInfo.getType() == ConnectivityManager.TYPE_WIFI) {  
  45.                 return mNetworkInfo.isConnected();  
  46.             }  
  47.         }  
  48.         return false;  
  49.     }  
  50.   
  51.     /** 
  52.      * Show wifi list 
  53.      */  
  54.     public String getWifiList() {  
  55.         if (WifiManager.WIFI_STATE_ENABLED != mWifiManager.getWifiState()) {  
  56.             return WIFI_IS_NOT_OPEN;  
  57.         }  
  58.         String text = "";  
  59.         List<ScanResult> results = mWifiManager.getScanResults();  
  60.         for (ScanResult result : results) {  
  61.             String SSID = result.SSID;  
  62.             if (SSID.startsWith("Sun")) {  
  63.                 int db = result.level;  
  64.                 text += SSID + ":" + db;  
  65.                 return text;  
  66.             }  
  67.         }  
  68.         return "";  
  69.     }  
  70.   
  71.     /** 
  72.      * 打开wifi开关 
  73.      */  
  74.     public void openWifi() {  
  75.         mWifiManager.setWifiEnabled(true);  
  76.     }  
  77.   
  78.     public void closeWifi() {  
  79.         mWifiManager.setWifiEnabled(false);  
  80.     }  
  81.   
  82.     /** 
  83.      * 是否打开开关 
  84.      */  
  85.     public boolean isWifiOpened() {  
  86.         return WifiManager.WIFI_STATE_ENABLED == mWifiManager.getWifiState();  
  87.     }  
  88.   
  89.     public boolean isWifiEnable() {  
  90.         return mWifiManager.isWifiEnabled();  
  91.     }  
  92.   
  93.     /** 
  94.      * 关闭开关 
  95.      */  
  96.     public void shutdownWiFi() {  
  97.         mWifiManager.setWifiEnabled(false);  
  98.         mNetworkID = -1;  
  99.     }  
  100.   
  101.     /** 
  102.      * 连接指定Wifi 
  103.      */  
  104.     public boolean connectWifi(final String ssid, final String password,  
  105.             final SecurityMode mode) {  
  106.         WifiInfo info = getWifiInfo();  
  107.         Log.d(TAG, "connectWifi---->" + info.toString() + " ");  
  108.         if (isWifiConnected() && info != null  
  109.                 && info.getSSID().equals("\"" + ssid + "\"")) {  
  110.             return true;  
  111.         }  
  112.         Log.d(TAG, "connectWifi---->" + isWifiConnected() + " ");  
  113.         List<WifiConfiguration> existingConfigs = mWifiManager  
  114.                 .getConfiguredNetworks();  
  115.         if (existingConfigs == null) {  
  116.             return false;  
  117.         }  
  118.         for (WifiConfiguration existingConfig : existingConfigs) {  
  119.             if (existingConfig.SSID.equals("\"" + ssid + "\"")) {  
  120.                 mNetworkID = existingConfig.networkId;  
  121.                 break;  
  122.             }  
  123.         }  
  124.         if (mNetworkID <= -1) {  
  125.             WifiConfiguration config = new WifiConfiguration();  
  126.             config.SSID = "\"" + ssid + "\"";  
  127.             if (mode == SecurityMode.OPEN) {  
  128.                 config.wepKeys[0] = "";  
  129.                 config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);  
  130.                 config.wepTxKeyIndex = 0;  
  131.             } else if (password != null && !"".equals(password)) {  
  132.                 if (mode == SecurityMode.WEP) {  
  133.                     config.preSharedKey = "\"" + password + "\"";  
  134.                     config.allowedAuthAlgorithms  
  135.                             .set(WifiConfiguration.AuthAlgorithm.SHARED);  
  136.                     config.allowedGroupCiphers  
  137.                             .set(WifiConfiguration.GroupCipher.CCMP);  
  138.                     config.allowedGroupCiphers  
  139.                             .set(WifiConfiguration.GroupCipher.TKIP);  
  140.                     config.allowedGroupCiphers  
  141.                             .set(WifiConfiguration.GroupCipher.WEP40);  
  142.                     config.allowedGroupCiphers  
  143.                             .set(WifiConfiguration.GroupCipher.WEP104);  
  144.                     config.allowedKeyManagement  
  145.                             .set(WifiConfiguration.KeyMgmt.NONE);  
  146.                     config.wepTxKeyIndex = 0;  
  147.                 } else {  
  148.                     config.preSharedKey = "\"" + password + "\"";  
  149.                     config.allowedAuthAlgorithms  
  150.                             .set(WifiConfiguration.AuthAlgorithm.OPEN);  
  151.                     config.allowedGroupCiphers  
  152.                             .set(WifiConfiguration.GroupCipher.TKIP);  
  153.                     config.allowedKeyManagement  
  154.                             .set(WifiConfiguration.KeyMgmt.WPA_PSK);  
  155.                     config.allowedPairwiseCiphers  
  156.                             .set(WifiConfiguration.PairwiseCipher.TKIP);  
  157.                     config.allowedGroupCiphers  
  158.                             .set(WifiConfiguration.GroupCipher.CCMP);  
  159.                     config.allowedPairwiseCiphers  
  160.                             .set(WifiConfiguration.PairwiseCipher.CCMP);  
  161.                     config.status = WifiConfiguration.Status.ENABLED;  
  162.                 }  
  163.             }  
  164.             mNetworkID = mWifiManager.addNetwork(config);  
  165.         }  
  166.         // 连接该网络  
  167.         return mWifiManager.enableNetwork(mNetworkID, true);  
  168.   
  169.     }  
  170.   
  171.     public WifiInfo getWifiInfo() {  
  172.         WifiInfo info = null;  
  173.         try {  
  174.             if (isWifiConnected()) {  
  175.                 info = mWifiManager.getConnectionInfo();  
  176.             }  
  177.         } catch (Exception e) {  
  178.             Log.e(TAG, "getWifiInfo", e);  
  179.         }  
  180.         return info;  
  181.     }  
  182.   
  183.     /** 
  184.      * 网络加密模式 
  185.      */  
  186.     public enum SecurityMode {  
  187.         OPEN, WEP, WPA2  
  188.     }  
  189.   
  190.     /** 
  191.      * 初始化WiFi连接 
  192.      */  
  193.     public boolean initWifiConnect() {  
  194.         Log.d("vivi", "初始化Wifi连接---->" + " 开始连接");  
  195.         return connectWifi(SSID, PASSWORD, SecurityMode.WPA2);  
  196.     }  
  197.   
  198. }  

以上是关于Android连接wifi,调用系统API的主要内容,如果未能解决你的问题,请参考以下文章

Android10 系统应用wifi连接和静态ip代理设置

android怎么开启wifi热点

无需电话连接即可通过 WiFi 从 WearOS 手表直接调用 API

转载:Adb远程连接Android系统(通过网络使用ADB(Connect to android with wifi))

Android 12 Wifi 开发(获取列表连接断开连接)

如何用android手机当wifi热点