Android подключается к WiFi без участия человека - PullRequest
7 голосов
/ 26 мая 2011

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

Ответы [ 4 ]

14 голосов
/ 27 мая 2011

Спасибо, ребята. С вашей помощью я теперь могу безболезненно подключаться к зашифрованной сети 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 ().
3 голосов
/ 03 июля 2011

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

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

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

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

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

2 голосов
/ 26 мая 2011

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

1 голос
/ 26 мая 2011

Ознакомьтесь с документацией для "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" />

и т. Д. *

...