Android подключается к WiFi без взаимодействия с человеком

Мне интересно, есть ли фрагменты кода, которые можно использовать для подключения Android-устройства к сети WiFi. Сеть должна быть либо открытой, либо WEP / WPA encypted, и видимой для этого устройства. Обычно мы используем интерфейс GUI для ввода паролей WiFi и нажмите кнопку подключения. Я хочу сохранить пароль в месте и использовать пароль для подключения к сети без взаимодействия человека. Это возможно? Большое спасибо.

Спасибо, парни. С вашей помощью я теперь могу без проблем подключиться к зашифрованной сети WPA / PSK. Вот мой фрагмент кода:

WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE); // setup a wifi configuration WifiConfiguration wc = new WifiConfiguration(); wc.SSID = "\"YOUR_SSID\""; wc.preSharedKey = "\"YOUR_PASSWORD\""; wc.status = WifiConfiguration.Status.ENABLED; wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP); wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP); wc.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK); wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP); wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP); wc.allowedProtocols.set(WifiConfiguration.Protocol.RSN); // connect to and enable the connection int netId = wifiManager.addNetwork(wc); wifiManager.enableNetwork(netId, true); wifiManager.setWifiEnabled(true); 

Трюки:

  • Строка SSID должна быть окружена символом ", который обозначается символом \"
  • AddNetwork () ОТКЛЮЧАЕТ добавленную сеть по умолчанию, поэтому вы должны включить ее с помощью метода enableNetwork ().

Чтобы сделать образец кода OPs, мне пришлось добавить еще одну строку:

 wc.allowedProtocols.set(WifiConfiguration.Protocol.WPA); 

Без этой линии он просто не подключится к сети. Конфигурация принимается и добавляется, но попытки подключения не выполняются. Я действительно получил следующее сообщение в окне logcat:

 Event [WPA: Failed to select WPA/RSN] android 

Который поставил меня на окончательное решение, выяснив, почему это не сработало для меня.

WifiManager – Вы пробовали посмотреть здесь. Метод addNetwork () выглядит так, как будто он может делать то, что вы хотите. Все, что вам нужно сделать, это поместить информацию в класс WifiConfiguration, а затем добавить сеть, а затем включить это соединение. Документация есть все.

Оформить заказ на документацию для «WifiManager»

Он может использоваться для включения Wi-Fi:

 WifiManager wifiManager = (WifiManager)this.context.getSystemService(Context.WIFI_SERVICE); wifiManager.setWifiEnabled(true); 

И его можно использовать для выполнения многих других задач.

Изменить: не забудьте обновить свои разрешения при мониторинге и изменении состояния wifi, например:

 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> 

и т.д…