4.2.5 Wi-Fi 连接
在 Wi-Fi 扫描成功后,单击对应的 Wi-Fi 项进行连接。在 Wi-Fi 连接成功后,会响应WifiManager.WIFI_STATE_CHANGED_ACTION 、 NETWORK_STATE_CHANGED_ACTION系统回调,在此回调监听中判断当前 Wi-Fi 的连接状态。连接某个 Wi-Fi 的原理是,通过 Wi-Fi列表的信息获取某个 Wi-Fi 的 ScanResult 对象并且获取 Wi-Fi 的 ssid 信息以及创建对应的
WifiConfiguration 信息。
创建 WifiConfiguration:
1. if(wifiConfiguration == null) {
2. wifiConfiguration = new WifiConfiguration();
3. wifiConfiguration.SSID = "\"" + this.mConnectSSID + "\"";
4. WifiApManager.setupConnectApWifiConfig(wifiConfiguration);
5. WifiApManager.setNetwork(wifiConfiguration, this);
6. //mNetworkId 不为-1,表示连接成功
7. mNetworkId = mWifiManager.addNetwork(wifiConfiguration);
8. wifiConfiguration.networkId = this.mNetworkId;
9. Logger.d(TAG, "created new network:" + wifiConfiguration.networkId);
10. } else {
11. mNetworkId = wifiConfiguration.networkId;
12. WifiApManager.setNetwork(wifiConfiguration, this);
13. }
根据不同的 Android 版本连接 Wi-Fi:
1. boolean enableNetwork() {
2. Method method;
3. if(Build.VERSION.SDK_INT != Build.VERSION_CODES.JELLY_BEAN
4. && Build.VERSION.SDK_INT != Build.VERSION_CODES.JELLY_BEAN_MR1) {
5. if(Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
6. return this.mWifiManager.enableNetwork(this.mNetworkId, true);
7. } else if(Build.VERSION.SDK_INT <= Build.VERSION_CODES.ICE_
CREAM_SANDWICH_MR1) {
8. try {
9. method = WifiManager.class.getMethod("connectNetwork",
Integer.TYPE);
10. method.i