2017-01-06 1 views
0

wifiManager.getConfiguredNetworks() 메소드로 구성된 Wi-Fi 네트워크 목록이 있습니다. Listview에 표시했습니다. 이제 listItem을 클릭하면 어느 하나의 네트워크에만 연결됩니다. 클릭 한 네트워크에 연결하고 싶습니다. 여기 구성된 네트워크 결과의 ListView에서 항목을 클릭하여 WIFI 네트워크에 어떻게 연결할 수 있습니까?

내가 코드의 블록 아래에 사용하는 내 자바 코드

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
       String networkSSID = list.get(position).SSID; 
       String networkPass = list.get(position).preSharedKey; 
       WifiConfiguration conf = new WifiConfiguration(); 
       conf.SSID = "\"" + networkSSID + "\""; 
       conf.preSharedKey = "\""+ networkPass +"\""; 
       int netId = wifiManager.addNetwork(conf); 
       wifiManager.disconnect(); 
       wifiManager.enableNetwork(netId,true); 
       wifiManager.reconnect(); 

      } 
     }); 
+0

당신은 당신이 다른 SSID와 비밀번호 클릭 항목을 받고 확인 했습니까? – Spartan

답변

0

입니다

private void connectToAP(String ssid, String passkey) { 
    WifiManager wifiManager = (WifiManager) context.getSystemService(WIFI_SERVICE); 
    Log.i(TAG, "* connectToAP"); 

    WifiConfiguration wifiConfiguration = new WifiConfiguration(); 
    List<ScanResult> scanResultList = wifiManager.getScanResults(); 



    for (ScanResult result : scanResultList) { 
     if (result.SSID.equals(ssid)) { 

      String securityMode = getScanResultSecurity(result); 

      if (securityMode.equalsIgnoreCase("OPEN")) { 

       wifiConfiguration.SSID = "\"" + ssid + "\""; 
       wifiConfiguration.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE); 
       int res = wifiManager.addNetwork(wifiConfiguration); 
       Log.d(TAG, "# add Network returned " + res); 

       boolean b = wifiManager.enableNetwork(res, true); 
       Log.d(TAG, "# enableNetwork returned " + b); 

       wifiManager.setWifiEnabled(true); 

      } else if (securityMode.equalsIgnoreCase("WEP")) { 

       wifiConfiguration.SSID = "\"" + ssid + "\""; 
       wifiConfiguration.wepKeys[0] = "\"" + passkey + "\""; 
       wifiConfiguration.wepTxKeyIndex = 0; 
       wifiConfiguration.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE); 
       wifiConfiguration.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40); 
       int res = wifiManager.addNetwork(wifiConfiguration); 
       Log.d(TAG, "### 1 ### add Network returned " + res); 

       boolean b = wifiManager.enableNetwork(res, true); 
       Log.d(TAG, "# enableNetwork returned " + b); 

       wifiManager.setWifiEnabled(true); 
      } 

      wifiConfiguration.SSID = "\"" + ssid + "\""; 
      wifiConfiguration.preSharedKey = "\"" + passkey + "\""; 
      wifiConfiguration.hiddenSSID = true; 
      wifiConfiguration.status = WifiConfiguration.Status.ENABLED; 
      wifiConfiguration.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP); 
      wifiConfiguration.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP); 
      wifiConfiguration.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK); 
      wifiConfiguration.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP); 
      wifiConfiguration.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP); 
      wifiConfiguration.allowedProtocols.set(WifiConfiguration.Protocol.RSN); 
      wifiConfiguration.allowedProtocols.set(WifiConfiguration.Protocol.WPA); 

      int res = wifiManager.addNetwork(wifiConfiguration); 
      Log.d(TAG, "### 2 ### add Network returned " + res); 

      wifiManager.enableNetwork(res, true); 

      boolean changeHappen = wifiManager.saveConfiguration(); 

      if (res != -1 && changeHappen) { 
       Log.d(TAG, "### Change happen"); 


      } else { 
       Log.d(TAG, "*** Change NOT happen"); 
      } 

      wifiManager.setWifiEnabled(true); 
     } 
    } 
} 
관련 문제