2011-12-30 160 views
16

我有一個小程序,試圖連接到一個wifi網絡。 它啓用設備上的wifi,然後如果它是第一次連接到某個網絡,它會加載設備wifi以選擇並添加連接密碼。 直到我添加密碼才能連接程序不應該完成。 如何添加一些東西,等到我從連接的WiFi管理器中獲取? 我嘗試睡眠,但它凍結了應用程序,並沒有得到WiFi彈出菜單連接? 還有其他方法嗎?等到wifi連接到android

回答

24

我在一個月前爲您的問題找到了解決方案,只需使用Thread put方法isConnected()即可。
在這種情況下,我使用WifiExplorerActivity來顯示所有WiFi網絡並允許用戶連接到它。

 Thread t = new Thread() { 
     @Override 
     public void run() { 
      try { 
        //check if connected! 
       while (!isConnected(WifiExplorerActivity.this)) { 
        //Wait to connect 
        Thread.sleep(1000);      
       } 

       Intent i = new Intent(WifiExplorerActivity.this, MainActivity.class); 
       startActivity(i); 

      } catch (Exception e) { 
      } 
     } 
    }; 
    t.start(); 

這是功能檢查的WiFi已連接與否:

public static boolean isConnected(Context context) { 
    ConnectivityManager connectivityManager = (ConnectivityManager) 
     context.getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo networkInfo = null; 
    if (connectivityManager != null) { 
     networkInfo = connectivityManager.getActiveNetworkInfo(); 
    } 

    return networkInfo != null && networkInfo.getState() == NetworkInfo.State.CONNECTED; 
} 

最後,確保你的AndroidManifest.xml是這樣的:

<activity android:name=".WifiExplorerActivity" >   
    <intent-filter> 
      <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> 
     </intent-filter> 
</activity> 

此外,您還可以使用ProgressDialog等待連接。見http://developer.android.com/guide/topics/ui/dialogs.html

+0

非常感謝。我使用它,它工作得很好 – prokopis 2012-01-01 17:01:04

+1

爲什麼你需要清單中的? (我從來沒有使用它,我不明白它是什麼) – MiniGod 2012-06-06 17:26:51

+1

我使用android.net.conn.CONNECTIVITY_CHANGE爲此活動註冊Receiver,請參閱http://stackoverflow.com/questions/8127324/connectivitymanager-android -net-conn-connectivity-change – R4j 2012-06-07 02:14:51