투케이2K

535. (kotlin/코틀린) ConnectivityManager , NetworkCapabilities 사용해 현재 휴대폰 인터넷 사용 가능 상태 확인 본문

Kotlin

535. (kotlin/코틀린) ConnectivityManager , NetworkCapabilities 사용해 현재 휴대폰 인터넷 사용 가능 상태 확인

투케이2K 2024. 11. 21. 20:56

[개발 환경 설정]

개발 툴 : AndroidStudio

개발 언어 : Kotlin

 

[소스 코드]

 

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

- 언어 : Kotlin

- 개발 툴 : Android Studio

- 구분 : 간단 소스

- 참고 : 

  >> 모바일 셀룰러 및 인터넷 사용 가능한 와이파이는 true , 와이파이는 연결 되었지만 인터넷 사용이 불가능 한 로컬 AP 연결 인 경우 false

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






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

    // -----------------------------------------------------------------------------------------
    // TODO [SEARCH FAST] : [isInternetUseStatus] : 현재 휴대폰 단말기 인터넷 사용 가능 상태 확인
    // -----------------------------------------------------------------------------------------
    @RequiresApi(Build.VERSION_CODES.M)
    fun isInternetUseStatus(mContext: Context?): Boolean {

        /**
            * // -----------------------------------------
            * [isInternetUseStatus 메소드 설명]
            * // -----------------------------------------
            * 1. 현재 휴대폰 단말기 인터넷 사용 가능 상태 확인
            * // -----------------------------------------
            * 2. 호출 방법 :
            *
            * if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){
            *
            *      C_StateCheck.isInternetUseStatus(A_Intro@this)
            * }
            * // -----------------------------------------
            * 3. 리턴 데이터 :
            *
            * 모바일 셀룰러 및 인터넷 사용 가능한 와이파이는 true , 와이파이는 연결 되었지만 인터넷 사용이 불가능 한 로컬 AP 연결 인 경우 false
            * // -----------------------------------------
            */


        // [리턴 변수 선언 실시]
        var returnData = false


        // [로직 처리 실시]
        try {
            if (mContext != null) {

                // [ConnectivityManager 생성]
                val cm = mContext.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager

                // [Network 및 NetworkCapabilities 생성]
                val network = cm.activeNetwork
                val networkCapabilities = cm.getNetworkCapabilities(network)

                // [인터넷 사용가능 하고 , 유효한 연결인지 확인 수행]
                val hasCapabilityInternet = networkCapabilities!!.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
                val hasCapabilityValidated = networkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED)

                // [and 결과로 인터넷 사용 가능한 네트워크 환경 상태 체크]
                returnData = hasCapabilityInternet && hasCapabilityValidated

            }

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


        // [로그 출력 실시]
        //*
        // ===============================================================
        S_Log._D_("현재 휴대폰 단말기 인터넷 사용 가능 상태 확인", arrayOf(
            "RETURN :: $returnData"
        ))
        // ===============================================================
        // */


        // [리턴 반환 실시]
        return returnData
    }

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

 

반응형
Comments