如何连接到Android中可用的SSID Wifi网络?

时间:2011-12-14 07:06:19

标签: android android-wifi wifimanager

如何使用SSID连接到特定的Wifi网络?我尝试过使用下面的代码。

wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);

        WifiConfiguration config = new WifiConfiguration();

        if(wifi.startScan()){
            List<ScanResult> results = wifi.getScanResults();
            for(int i=0;i<results.size();i++)
            {   Log.e("VALUE"," "+results.get(i).toString());
                Log.e("",""+results.get(i).SSID);
                if(results.get(i).SSID.equalsIgnoreCase("\"MAC\""))
                {
                    Log.e("","mac.....");

            try{ 
                String ssid="\""+results.get(i).SSID+"\mac"";
                Log.e("SSId"," "+ssid);
                config.SSID=ssid;
            }catch(Exception e){Log.e("","Error : "+e.toString());}

            config.preSharedKey="0a0b0f62170ecc5bcf721b6ff170b8b560101b5d56b00a26abec217e0bb4aa1f";
            config.status=WifiConfiguration.Status.ENABLED;

            config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40); 
            config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104);
            config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
            config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
            config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);

            config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
            config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
            config.allowedProtocols.set(WifiConfiguration.Protocol.RSN);

            int res=wifi.addNetwork(config);
                    Log.e("ENABLE ",""+wifi.enableNetwork(res, false));

                    break;
                }
            }

        }

我没有在任何地方找到任何关于如何做到这一点的信息?我哪里错了?

1 个答案:

答案 0 :(得分:0)

您的问题可能与我遇到的问题有关。如果直接从扫描结果中获取SSID值,则它不是双引号,但由于某种原因,WifiConfiguration要求SSID是双引号。请看我的答案。

https://stackoverflow.com/a/12616521/178931