дождитесь пока на андроиде подключится wifi - PullRequest
16 голосов
/ 30 декабря 2011

У меня есть небольшая программа, которая пытается подключиться к сети Wi-Fi.Он включает Wi-Fi на устройстве, а затем, если он подключается к определенной сети впервые, загружает Wi-Fi устройства, чтобы выбрать и добавить пароль для подключения.Пока я не добавлю пароль для подключения, программа не должна быть закончена.Как я могу добавить что-то, чтобы ждать, пока я получу от менеджера Wi-Fi, который подключен?Я пытаюсь спать, но приложение зависает, и я не получаю всплывающее меню Wi-Fi для подключения?есть ли другие способы?

1 Ответ

24 голосов
/ 30 декабря 2011

Я нашел решение вашей проблемы месяц назад, просто используйте в нем метод 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();

И это функция для проверки подключения Wi-Fi или нет:

  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

...