Страницы

Поиск по вопросам

воскресенье, 7 июля 2019 г.

При програмном подключении к wifi на android 8.1 соединение держиться только 35 секунд

Пишу программное подключение к wifi устройству.Делаю через Broadcast Recessiver. Убил уже кучу времени в итоге добился стабильной работы на всех андроидах кроме 8. На 8 стандартный код не работает! Вот код самого подключения:
public void setWifiConnection1(View view){
WifiManager wifi = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
WifiConfiguration conf = new WifiConfiguration(); WifiInfo wifiInfo = wifiManager.getConnectionInfo();
conf.SSID = "\"NETWORK_NAME\""; conf.preSharedKey = "\"PASSWORD\""; int netId = wifi.addNetwork(conf); if (netId == -1) { netId = getExistingNetworkId(conf.SSID); }
wifi.enableNetwork(netId, true); wifi.reconnect();
}

private int getExistingNetworkId(String SSID) {
WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
List configuredNetworks = wifiManager.getConfiguredNetworks(); if (configuredNetworks != null) { for (WifiConfiguration existingConfig : configuredNetworks) { if (existingConfig.SSID.equals(SSID)) { return existingConfig.networkId; } } } return -1; }
Добавляю строчку wifi.disconnect(); Коннектиться только на 35 секунд.
wifi.disconnect(); wifi.enableNetwork(netId, true); wifi.reconnect();
Вот весь код подключения с формой ввода
Буду очень благодарен за любые советы и подсказки как добиться стабильной работы на 8-ке!


Ответ

Восьмерка просто экономит батарею, если трафика никакого нету, то все логично. Можно сделать бесконечный поток, и в нем уже вызывать то, что необходимо, либо имплементься через Runnable и писать в run() то, что нужно для логики приложения

Комментариев нет:

Отправить комментарий