2012-05-31 14 views
5

Bazı bedenler bu sorunu çözmeme yardımcı olabilir mi?Belirtilen SSID ile bir WiFi otomatik olarak nasıl bağlanır?

İşte kodum ve mWifi.enableNetwork(netID, true) adresinde ağ etkinleştirilemiyor ve belirtilen ağa otomatik bağlanamıyor. Bu yüzden nerede hata yaptığımı bilmek istiyorum?

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

Lütfen çıktınızı çeşitli Log.i() silerinizden gönderin. – QED

+0

Sonunda çalışmıyor – theLazyFinder

cevap

2

WifiConfiguration nesnesine WifiConfiguration.KeyMgmt eklemeniz gerektiğini düşünüyorum. açık bir ağ varsayarak:

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

Ayrıca tarama sonuçları startScan() çağrınızda çıkışında hemen sonra kullanılabilir olduğunu varsayarak dikkatli olun. Bu durumda en iyi bahis, BroadcastReceiver'ı WifiManager.SCAN_RESULTS_AVAILABLE_ACTION'a eklemek ve tüm kodunuzu mWifi.getScanResults() ileriye doğru eklemektir. Başarılı olmak için enableNetwork()'u aldıktan sonra mWifi.reconnect()'a bir arama eklemeniz gerekecektir.

WifiConfiguration wc'u kullanıma hazırlarken, here numaralı gönderiyi düşünürseniz buna bayılıyorum. Son olarak, başka bir iyi cevap here.

+0

anladım. cevap bu. Teşekkürler. –

0

deneyin İkincisi yapılandırılmış ağlar listesinde kontrol

(tek kullanıyorsanız) bu tür izin şifreleri, anahtar Mangement şeması ve PSK olarak ağı hakkında Kalan bilgileri ekleyerek ilk emin olmak için don Bunu yapmada bir nokta olmadığı için aynı yapılandırmaya sahip başka bir ağ eklemeyi denemeyin.

Bir öneri olarak startScan() işlevini başlatma ve bitirme işlemini beklemeyin. SCAN_RESULTS_AVAILABLE_ACTION için kaydolun ve bu sonuçları işlemek için yayın alıcınızdan etkinliğinize bir geri arama kullanın.

İlgili konular