web-dev-qa-db-ja.com

Wi-Fiが接続されるまで待つandroid

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

17
prokopis

1か月前に問題の解決策を見つけました。その中で、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 を参照してください

25
R4j