Подключение к указанной доступной сети Wi-Fi

#android #android-wifi #wifimanager

#Android #android-wifi #wifimanager

Вопрос:

Из моего приложения я могу включать / выключать Wi-Fi на своем устройстве и сканировать доступные сети, но я не могу подключиться к указанной доступной сети. Это код, который я использую:

  if(wifi.getWifiState()==wifi.WIFI_STATE_DISABLED)
        { 
            wifi.setWifiEnabled(true);

        }
        if(wifi.startScan())
        {
            //ls=(ArrayAdapter<ScanResult>) wifi.getScanResults();
            ls=wifi.getScanResults();

            Log.e("",ls.get(0).toString());
            for(int i=0;i<ls.size();i  )
            {   Log.e("VALUE"," " ls.get(i).toString());
                Log.e("","" ls.get(i).SSID);
                if(ls.get(i).SSID.equalsIgnoreCase("SPECTRUM-GREEN"))
                {
                    Log.e("","SPectrum GREEN FOUND.....");

            try{ 
                String ssid=""" ls.get(i).SSID """;
                Log.e("SSId"," " ssid);
                config.SSID=ssid;
            }catch(Exception e){Log.e("","Error : " e.toString());}

            config.preSharedKey=""password"";
            config.status=WifiConfiguration.Status.ENABLED;

            config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40); 
            config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104);
            config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
            config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
            config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);

            config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
            config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
            config.allowedProtocols.set(WifiConfiguration.Protocol.RSN);

            int res=wifi.addNetwork(config);
                    Log.e("ENABLE ","" wifi.enableNetwork(res, false));

                    break;
                }
            }
  

Ответ №1:

Хотя это старый вопрос, на случай, если кто-то столкнется с этим, мне помогло следующее:

 void connect (String ssidName) {
    boolean result = false;
    List<WifiConfiguration> arraylist = wifiManager.getConfiguredNetworks();
    for (WifiConfiguration wifiConfiguration : arraylist) {
        String wifiConfigSSID = wifiConfiguration.SSID.replace(""", "");
        if (wifiConfigSSID.equals(ssidName)) {
            result = wifiManager.enableNetwork(wifiConfiguration.networkId, true);
            break;
        }
    }
}
  

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

Ответ №2:

Просто комментарий. Вы пытаетесь подключиться ad hoc? Это невозможно с «обычными» телефонами Android, о которых я читал…

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

1. да, к доступной одноранговой сети, есть ли какой-либо альтернативный способ для этого?

2. Я тоже пробовал это раньше. Кажется, есть только 2 возможности, в зависимости от того, что вам нужно выполнить. 1. Если вы действительно хотите подключить Wi-Fi к ad hoc, похоже, существуют специальные решения в зависимости от конкретного телефона и / или путем рутирования телефона — я никогда этого не делал, потому что я нашел решение, которое работает для всех. Вторая возможность — это Bluetooth, который, похоже, является способом подключения ad hoc на Android. ps если вам нравятся мои ответы, возможно, вы захотите принять их, это поможет получить ответы на дальнейшие вопросы…

3. мое приложение должно работать для определенного устройства, но не для конкретной сети. доступные сети могут быть переменными выбор сети пользователем может быть переменным. не могли бы вы, пожалуйста, сообщить мне о специальном решении для моего устройства Motorola

Ответ №3:

Вы должны отключить другие сети:

 wifi.enableNetwork(res, true);