2012-05-31 4 views
5

Может ли какой-нибудь орган помочь мне решить эту проблему?Как подключить WiFi Wi-Fi с указанным SSID?

Вот мой код, и в mWifi.enableNetwork(netID, true) он не может включить сеть и не может автоматически подключиться к указанной сети. Значит, я хочу знать, где я ошибся?

public class WifiConnActivity extends Activity { 
    /** Called when the activity is first created. */ 
    final String tag = "WifiConn:..."; 
    EditText txt; 
    WifiManager mWifi; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

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

     txt = (EditText)findViewById(R.id.editText1); 

     Button b1 = (Button)findViewById(R.id.B1);   
     b1.setOnClickListener(new OnClickListener(){ 
      @Override 
      public void onClick(View v) 
      { 

       if (mWifi.startScan()) //scan now 
       { 
        Log.d(tag, "startScan()"); 

        List<ScanResult> sRet = mWifi.getScanResults(); //scan results. 

        for (int i=0; i<sRet.size(); i++) 
        { 
         ScanResult retS = sRet.get(i); 
         txt.append("resT: " + retS.SSID +" " + retS.BSSID + "\n"); 
         Log.d(tag, "resT: " + retS.SSID +" " + retS.BSSID); 

         if (retS.SSID.equalsIgnoreCase("TEST")) 
         { 
          txt.append("Found: " + retS.SSID +" " + retS.BSSID + "\n"); 

          WifiConfiguration wc = new WifiConfiguration(); 

          wc.SSID = "\""+retS.SSID+"\""; 
          wc.BSSID = retS.BSSID; 
          wc.status = WifiConfiguration.Status.ENABLED; 
          wc.hiddenSSID = true; 

          int netID = mWifi.addNetwork(wc); // add network 
          txt.append("addNetwork: "+ Integer.toString(netID) +"\n"); 

          if(mWifi.enableNetwork(netID, true)) // enable network, but cannot work??????????? 
          { 
           txt.append("enableNetwork: true\n"); 
          } 
         } 
        } 

       } 
      } 

     });  
    } 
} 
+0

Пожалуйста, разместите выходные данные из различных Log.i() s. – QED

+0

Не работает на моем конце – theLazyFinder

ответ

2

Я думаю, вам нужно добавить WifiConfiguration.KeyMgmt в объект WifiConfiguration. Если предположить, что это открытая сеть:

wc.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE); 

Кроме того, будьте осторожны в предположении, что результаты сканирования немедленно доступны при выходе из вашего вызова startScan(). Лучше всего в этом случае добавить BroadcastReceiver на WifiManager.SCAN_RESULTS_AVAILABLE_ACTION и добавить к нему весь ваш код от mWifi.getScanResults() вперед. Вам нужно будет добавить звонок к mWifi.reconnect(), как только вы получите enableNetwork(), чтобы добиться успеха.

Что касается инициализации вашего WifiConfiguration wc, мне бы это понравилось, если бы вы рассмотрели мой пост here. Наконец, еще один хороший ответ: here.

+0

получил. это ответ. Благодарю. –

0

попробуйте добавить недостающую информацию о сети, например, разрешенных шифры, ключевой схемы MANGEMENT и PSK (если вы используете один)

Во-вторых, проверьте в настроенном списке сетей первых, чтобы убедиться, что вы не Не пытайтесь добавить еще одну сеть с той же конфигурацией, что и нечего делать.

В качестве рекомендации не запускайте Scan() и дождитесь окончания. Зарегистрируйтесь для SCAN_RESULTS_AVAILABLE_ACTION и используйте обратный звонок от широковещательного приемника к вашей деятельности для обработки этих результатов.

Смежные вопросы