2016-02-02 63 views
2

我使用以下代碼來檢測並連接到特定的WiFi ssid,當我按下android中的按鈕時。以下是代碼。任何幫助將不勝感激。未能以編程方式連接到Android中的特定WiFi


SSID: - 「myHotspot」 &密碼: - 「12345678」


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

       wifiConfiguration.SSID = "\"myHotspot\""; 
       wifiConfiguration.preSharedKey ="\"12345678\""; 
       WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE); 

       int netId = wifiManager.updateNetwork(wifiConfiguration); 
       if (wifiManager.isWifiEnabled()) { //---wifi is turned on--- 
        //---disconnect it first--- 
        wifiManager.disconnect(); 

       } else { //---wifi is turned off--- 
        //---turn on wifi--- 

        wifiManager.setWifiEnabled(true); 
       } 
       wifiManager.enableNetwork(netId, true); 
       wifiManager.reconnect(); 

      } 
     }); 



我得到的主要問題是,我的手機被連接到ssid,並在2-3秒後失去連接,並連接到我的家庭無線路由器(它具有互聯網連接)


注意: - 我試圖連接的ssid只是一個沒有任何Internet連接的本地熱點。
如果我嘗試使用「addNetwork(wifiConfiguration)」,它將創建多個具有相同名稱的網絡。所以現在我該如何解決這個問題?!

回答

2

我認爲這裏的問題是您在撥打wifiManager.setWifiEnabled(true)後立即嘗試enableNetwork。一般來說,開啓wifi需要5-10秒,具體取決於設備,直到此時對wifiManager.enableNetwork的任何呼叫都將丟失。因此,連接到所需網絡的呼叫會丟失,一旦wifi打開,您的設備就會連接到它記住的最後一個網絡。

嘗試創建一個循環,你繼續,如果wifiManager.isWifiEnabled() == true檢查和不斷循環,直到它返回true(與Thread.sleep()明顯,並在的AsyncTask或單獨Thread這樣做)。只有在嘗試呼叫enableNetwork之後。

相關問題