Мне интересно, есть ли фрагменты кода, которые можно использовать для подключения устройства Android к сети WiFi. Сеть должна быть либо открытой, либо зашифрованной WEP/WPA и видимой для этого устройства. Обычно мы используем графический интерфейс для ввода паролей WiFi и нажатия кнопки подключения. Я хочу хранить пароль в определенном месте и использовать его для беспрепятственного подключения к сети без участия человека. Это возможно? Большое спасибо.
Android подключается к WiFi без участия человека
Ответы (4)
Спасибо ребята. С вашей помощью я теперь могу без проблем подключаться к сети с шифрованием 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().
Чтобы заставить работать пример кода OP, мне пришлось добавить еще одну строку:
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);
И его можно использовать для многих других вещей.
Изменить: не забудьте обновить свои разрешения при мониторинге и изменении состояния Wi-Fi, например:
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
и т.д...