Подключиться к сети Wi-Fi программно android - PullRequest
0 голосов
/ 09 марта 2020

У меня была функция, она подключает пользователя к сети Wi-Fi с использованием ssid и пароля, она работает нормально, но несколько дней go, она не подключается к выбранному Wi-Fi, она автоматически вернется к последнему подключенному Wi-Fi, я Я нахожусь на android P , прежде чем опубликовать свой вопрос, я пробовал некоторые решения в stackoverflow, но всегда та же проблема.

 private void connectPlace(String ssid, String key) {


    WifiManager wm = (WifiManager) getActivity().getApplicationContext().getSystemService(WIFI_SERVICE);
    wm.disconnect();

    List<WifiConfiguration> wifiConfigurations = wm.getConfiguredNetworks();

    for (WifiConfiguration wf : wifiConfigurations)
        wm.removeNetwork(wf.networkId);

    if ((ssid != null && !ssid.isEmpty()) && (key != null && !key.isEmpty())) {

        WifiConfiguration wifiConfig = new WifiConfiguration();
        List<WifiConfiguration> configuredNetworks = wm.getConfiguredNetworks();
        if (configuredNetworks != null) {
            for (WifiConfiguration existingConfig : configuredNetworks) {
                if (wifiConfig.priority <= existingConfig.priority) {
                    wifiConfig.priority = existingConfig.priority + 1;
                }
            }
        }
        wifiConfig.SSID = String.format("\"%s\"", ssid);
        wifiConfig.preSharedKey = String.format("\"%s\"", key);


        int netId = wm.addNetwork(wifiConfig);

        if(netId == -1)
        {
            netId = getExistingNetworkId(ssid,wm);
        }
         wm.disconnect();
        wm.enableNetwork(netId, true);
        wm.reconnect();


    } else {
        Log.e(TAG, "Wifi data is empty !");
    }

}
private int getExistingNetworkId(String SSID, WifiManager wifiManager) {
    List<WifiConfiguration> configuredNetworks = wifiManager.getConfiguredNetworks();
    if (configuredNetworks != null) {
        for (WifiConfiguration existingConfig : configuredNetworks) {
            if (existingConfig.SSID.equals(SSID)) {
                return existingConfig.networkId;
            }
        }
    }
    return -1;
}
...