투케이2K

843. (Android/Java) [targetSdk 22] 안드로이드 하위 버전 빌드 수행 및 WifiConfiguration 사용해 WPA , WPA2 와이파이 연결 수행 본문

Android

843. (Android/Java) [targetSdk 22] 안드로이드 하위 버전 빌드 수행 및 WifiConfiguration 사용해 WPA , WPA2 와이파이 연결 수행

투케이2K 2024. 8. 20. 21:10
반응형

[개발 환경 설정]

개발 툴 : AndroidStudio

개발 언어 : Java / Kotlin

 

[소스 코드]

                try {

                    // ---------------------------------------------------------------
                    // TODO [사전] : 해당 연결하려는 와이파에 이미 연결 된 상태 인 지 확인 필요
                    // ---------------------------------------------------------------
                    // TODO [사전] : 와이파이 기능이 활성화 된 상태 필요
                    // ---------------------------------------------------------------
                    // TODO [사전] : Manifest.permission.ACCESS_FINE_LOCATION 위치 권한 상태 부여 필요
                    // ---------------------------------------------------------------
                    // TODO [설명] : 자체 기기 설정 앱으로 구글 스토어 미출 시 >> 강제 빌드 버전 하위 변경 후 해당 코드 적용 (TargetSdk 22)
                    // ---------------------------------------------------------------

                    // TODO [네트워크 연결 변수 선언]
                    String ssid = "TWOK";
                    String password = "t0123456789";

                    // TODO [WPA, WPA2 옵션] : [와이파이 연결 수행]
                    WifiConfiguration wifiConfiguration = new WifiConfiguration();

                    wifiConfiguration.SSID = "\"" + String.valueOf(ssid) + "\""; // 연결하고자 하는 SSID
                    wifiConfiguration.status = WifiConfiguration.Status.DISABLED;
                    wifiConfiguration.priority = 40;

                    wifiConfiguration.allowedProtocols.set(WifiConfiguration.Protocol.RSN);
                    wifiConfiguration.allowedProtocols.set(WifiConfiguration.Protocol.WPA);
                    wifiConfiguration.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
                    wifiConfiguration.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
                    wifiConfiguration.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
                    wifiConfiguration.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40);
                    wifiConfiguration.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104);
                    wifiConfiguration.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
                    wifiConfiguration.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);

                    wifiConfiguration.preSharedKey = "\"".concat(String.valueOf(password)).concat("\""); // 비밀 번호

                    WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);

                    if (wifiManager.getWifiState() != WifiManager.WIFI_STATE_ENABLED) {
                        wifiManager.setWifiEnabled(true);
                    }

                    if (ActivityCompat.checkSelfPermission(A_Intro.this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
                        return;
                    }


                    // TODO [연결 추가]
                    int wifiId = wifiManager.addNetwork(wifiConfiguration);

                    /*
                    List<WifiConfiguration> list = wifiManager.getConfiguredNetworks();

                    S_Log._D_("WifiConfiguration :: getConfiguredNetworks", new String[]{String.valueOf(list)});
                    // */


                    // TODO [연결 상태 확인]
                    if (wifiId != -1) {
                        wifiManager.enableNetwork(wifiId, true);

                        S_Log._W_("WifiConfiguration :: Connection Wifi", null);
                    }
                    else {
                        S_Log._E_("WifiConfiguration :: Connection Fail", null);
                    }

                }
                catch (Exception e){
                    e.printStackTrace();
                }
 

[결과 출력]

 

W///===========//: ================================================
I/: [LOG :: CLASS PLACE :: com.example.javaproject.A_Intro$1.onClick(A_Intro.java:372)]
I/: ----------------------------------------------------
I/: [LOG :: NOW TIME :: 2024-08-20 13:23:08 화요일]
I/: ----------------------------------------------------
I/: [LOG :: DESCRIPTION :: WifiConfiguration :: Connection Wifi]
W///===========//: ================================================

 

반응형
Comments