Проверка учетных данных Wi-Fi, если SSID WIFI уже был подключен к устройству - PullRequest
0 голосов
/ 30 апреля 2018

Положение: 1) У меня уже есть устройство Android, успешно подключенное к моему SSID, поэтому пароль хранится и подключается хорошо. 2) В моем приложении у меня есть опция для пользователя, чтобы ввести учетные данные Wi-Fi для этой сети (SSID здесь определен без проблем, но пароль без root не может быть определен, поэтому пользователь вводит его вручную)

Проблема: После ввода пользователем пароля Wi-Fi - мне нужно проверить, если пароль правильный - только способ проверить это подключиться к этой сети Wi-Fi - Как это сделать правильно?

Что пробовал: Когда я отключаюсь от Wi-Fi ssid и добавляю конфигурацию для wifi с вводом учетных данных пользователя - даже если это неверный пароль - wifi переподключается успешно, потому что я думаю, что ранее введенные учетные данные из конфигурации вне моего приложения были правильными. Так что, какой бы пароль ни вводил пользователь, он все равно подключается, и я не могу знать, правильно ли введены учетные данные пользователя.

Любая помощь - добро пожаловать! Спасибо.

1 Ответ

0 голосов
/ 30 апреля 2018

Наконец, ребята после нескольких часов исследований смогли определить следующее:

Предварительные условия: 1) устройство подключено к сети Wi-Fi со стандартными настройками устройства с правильным паролем; 2) M пытается проверить введенные пользователем учетные данные для этой сети Wi-Fi.

Результаты: Предупредить! (у меня работает только точный поток действий):

1) отключиться от Wi-Fi:

wifiManager.disconnect();

2) создать конфигурацию:

WifiConfiguration conf = new WifiConfiguration();
conf.SSID = "\"" + wifiSsid + "\"";
if(authType == 0){
    conf.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
} else if(authType == 1) {
    conf.preSharedKey = "\""+ wifiPassword+"\"";
    conf.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
    conf.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40);
} else {
    conf.preSharedKey = "\""+ wifiPassword+"\"";
}
conf.status = WifiConfiguration.Status.ENABLED;

3) отключить и удалить все конфиги (на самом деле они не будут удалены, если они не были созданы в вашей заявке):

 List<WifiConfiguration> list = wifiManager.getConfiguredNetworks();
 for (WifiConfiguration i : list) {
     wifiManager.disableNetwork(i.networkId);
     wifiManager.removeNetwork(i.networkId);
 }

4) добавить созданную конфигурацию:

final int networkId = wifiManager.addNetwork(conf);

5) Активировать конфигурацию, но только с помощью этой команды:

wifiManager.enableNetwork(networkId, true);

В результате, если пароль Wi-Fi в конфигурации правильный, вы получаете соединение с Wi-Fi в течение примерно 2 - 4 секунд, но если пароль от Wi-Fi в конфигурации неправильный - вы подключаетесь (если эта сеть была подключена ранее через настройки) намного дольше около 8 - 12 секунд.

Здесь вы не подключены в течение 2-4 секунд, вы можете написать, что проверка учетных данных Wi-Fi не удалась или подключение к сети не удалось.

Я попросил у функции разработчиков Google менеджера Wi-Fi проверить способность учетных данных, но пока для меня это все, что можно сделать.

Ребята, любые другие решения приветствуются!

...