투케이2K

539. (kotlin/코틀린) [안드로이드 10 미만] 안드로이드 하위 버전 빌드 수행 및 WifiConfiguration 사용해 WPA , WPA2 와이파이 연결 수행 본문

Kotlin

539. (kotlin/코틀린) [안드로이드 10 미만] 안드로이드 하위 버전 빌드 수행 및 WifiConfiguration 사용해 WPA , WPA2 와이파이 연결 수행

투케이2K 2024. 12. 24. 17:08

[개발 환경 설정]

개발 툴 : AndroidStudio

개발 언어 : Kotlin

 

[소스 코드]

 

// --------------------------------------------------------------------------------------
[개발 및 테스트 환경]
// --------------------------------------------------------------------------------------

- 언어 : Java / Kotlin


- 개발 툴 : AndroidStudio


- 기술 및 구분 : WifiConfiguration / Wifi Connection / WPA , WPA2

// --------------------------------------------------------------------------------------






// --------------------------------------------------------------------------------------
[소스 코드]
// --------------------------------------------------------------------------------------

    try {

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

        // TODO [Wifi 연결에 필요한 SSID , PW 정의 수행]
        val ssid = "TWOK"
        val password = "t0123456789"


        // TODO [WifiConfiguration 객체 생성]
        val wifiConfiguration = WifiConfiguration()


        // TODO [초기 clear 작업 진행]
        wifiConfiguration.allowedAuthAlgorithms.clear()
        wifiConfiguration.allowedGroupCiphers.clear()
        wifiConfiguration.allowedKeyManagement.clear()
        wifiConfiguration.allowedPairwiseCiphers.clear()
        wifiConfiguration.allowedProtocols.clear()


        // TODO [와이파이 연결 정보 설정 수행] : [WPA, WPA2 옵션]
        wifiConfiguration.SSID = "\"" + ssid + "\"" // 연결하고자 하는 SSID
        wifiConfiguration.priority = 40

        wifiConfiguration.status = WifiConfiguration.Status.DISABLED
        wifiConfiguration.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN)
        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.WPA)
        wifiConfiguration.allowedProtocols.set(WifiConfiguration.Protocol.RSN)
        wifiConfiguration.preSharedKey = "\"" + password + "\"" // [연결하고자 하는 PW]


        val wifiManager = applicationContext.getSystemService(WIFI_SERVICE) as WifiManager

        if (wifiManager.wifiState != WifiManager.WIFI_STATE_ENABLED) {
            wifiManager.isWifiEnabled = true
        }


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


        // TODO [연결 상태 확인]
        if (wifiId != -1) {
            wifiManager.enableNetwork(wifiId, true)
            S_Log._W_("WifiConfiguration :: Connection Wifi", null)
        } else {
            S_Log._E_("WifiConfiguration :: Connection Fail", null)
        }

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

// --------------------------------------------------------------------------------------






// --------------------------------------------------------------------------------------
[참고 사이트]
// --------------------------------------------------------------------------------------

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

https://blog.naver.com/kkh0977/223554794953?trackingCode=blog_bloghome_searchlist

// --------------------------------------------------------------------------------------

 

반응형
Comments