2011-12-30 13 views
16

私はWi-Fiネットワークに接続しようとする小さなプログラムを持っています。 これは、デバイス上の無線LANを有効にしてから、特定のネットワークに初めて接続する場合です。Wi-Fiをロードして、接続用のパスワードを選択して追加します。 プログラムを接続するためにパスワードを追加するまでは、終了しないでください。 接続しているWi-Fiマネージャから取得するまで、何かを追加するにはどうすればよいですか? 私は睡眠しようとしますが、アプリケーションをフリーズして接続するためのWi-Fiポップアップメニューが表示されません。 他の方法はありますか?wifi接続時までお待ちください。

答えて

24

私はあなたの問題の解決策を1ヶ月前に見つけました。ちょうどThread putメソッドisConnected()を使用してください。
この場合、WifiExplorerActivityを使用してすべてのWi-Fiネットワークを表示し、ユーザーがそのネットワークに接続できるようにします。

 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(); 

そして、これは、無線LANをチェックする機能ですが接続したりしていない:

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

+1

なぜマニフェストに ''が必要ですか? (私はそれを一度も使用していないし、何をしているのか理解していない) – MiniGod

+1

私はandroid.net.conn.CONNECTIVITY_CHANGEを使ってこのアクティビティのReceiverを登録しています。http://stackoverflow.com/questions/8127324/connectivitymanager-android -net-conn-connectivity-change – R4j

関連する問題