Intereting Posts
Проверьте, существует ли фрагмент и его повторное использование Предупреждение / ошибки журнала Logcat Принудительное отображение сетки для рисования всех фрагментов Как установить emoji по unicode в android textview Android – Очистить флаг задачи не работает для PendingIntent VideoView падает после долгого времени Пользовательский вид для ActionBar.Tab не отображается правильно Ошибка: тегу <item> требуется атрибут «drawable» или дочерний тег, определяющий возможность рисования Как печатать на консоли в Android Studio? Не удалось найти плагин DRM Android: что такое inputType для имени пользователя Закрыть экземпляр Realm после завершения выполнения Менеджер местоположений Android возвращает одинаковые GPS-координаты каждый раз Защита приложения от декомпиляции путем скрытия манифеста и преобразования кода в символ Unicode Android: как получить список орфографии, упорядоченный по имени o по дате по убыванию?

Как программно определить, подключен ли Android к Wi-Fi?

Я пытаюсь настроить тест на автоматизацию на новом приложении для Android, которое я разрабатываю, но имею немного проблем с одним из apis

Проблема, с которой я столкнулся, заключается в том, что я хочу начать тест. ПОСЛЕ У Wi-Fi есть соединение, а не когда оно находится в состоянии соединения. Я попробовал два решения, но не повезло, и тест, кажется, начинается до того, как мое устройство Android полностью подключено (нет x на wifi-барах)

wifiManager.setWifiEnabled(state); WifiInfo wifiInfo = wifiManager.getConnectionInfo(); while (wifiInfo.getSSID() == null) { Log.i("WifiStatus", "Here I am"); Thread.sleep(Time.ONE_SECOND); wifiInfo = wifiManager.getConnectionInfo(); 

Это моя первая реализация, пытаясь заставить SSID определить, установлено ли соединение. Но тест все же начинается до того, как будет произведено полное соединение и не будет выполнена настройка.

 ConnectivityManager connManager = (ConnectivityManager) con.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo networkInfo = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI); wifiManager.setWifiEnabled(state); while (!networkInfo.isConnected()) { Log.i("WifiStatus", "Here I am"); Thread.sleep(Time.ONE_SECOND); networkInfo = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI); } 

Во второй реализации я использую диспетчер подключений вместо этого и используя isConnected() .

У кого-нибудь есть другой метод, который я могу проверить, чтобы определить, полностью ли установлено устройство с Wi-Fi?

Отправьте «ping», если вы хотите это назвать. Если соединение завершено, вы знаете, что вы все еще подключены. Если вы получаете IOException или исключение NullPointerException , то вы, вероятно, устарели и больше не подключены.

 try { URL url = new URL("http://www.google.com"); HttpURLConnection urlConnect = (HttpURLConnection) url.openConnection(); urlConnect.setConnectTimeout(1000); urlConnect.getContent(); System.out.println("Connection established."); } catch (NullPointerException np) { np.printStackTrace(); } catch (IOException io) { io.printStackTrace(); } 

Вместо того, чтобы вручную загрузить networkinfo … попробуйте получить «активную» сеть и проверьте, является ли это Wi-Fi. Примечание. Если это значение равно null, это означает, что сеть не подключена … поэтому она заменяет вызов isConnected.

 ConnectivityManager connManager = (ConnectivityManager) con.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo current = connManager.getActiveNetworkInfo(); boolean isWifi = current != null && current.getType() == ConnectivityManager.TYPE_WIFI;