투케이2K

475. (kotlin/코틀린) [유틸 파일] getNetworkDataRestrictState : 앱 데이터 절약 모드 활성 상태 확인 본문

Kotlin

475. (kotlin/코틀린) [유틸 파일] getNetworkDataRestrictState : 앱 데이터 절약 모드 활성 상태 확인

투케이2K 2024. 4. 9. 20:22

[개발 환경 설정]

개발 툴 : AndroidStudio

개발 언어 : Kotlin

 

[소스 코드]

 

        // -----------------------------------------------------------------------------------------
        // TODO [SEARCH FAST] : [getNetworkDataRestrictState] : 앱 데이터 절약 모드 활성 상태 확인
        // -----------------------------------------------------------------------------------------
        fun getNetworkDataRestrictState(mContext: Context): Boolean {

            /**
             * // -----------------------------------------
             * [getNetworkDataRestrictState 메소드 설명]
             * // -----------------------------------------
             * 1. 앱 데이터 절약 모드 활성 상태 확인
             * // -----------------------------------------
             * 2. 호출 방법 :
             *
             * C_StateCheck.getNetworkDataRestrictState(A_Main.this);
             * // -----------------------------------------
             * 3. 리턴 데이터 :
             *
             * 휴대폰 설정에서 데이터 절약 모드가 활성화 된 경우 true / 아니면 false
             * // -----------------------------------------
             */


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


            // [로직 처리 실시]
            try {

                // [ConnectivityManager 선언]
                val connMgr = mContext.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager

                // [대규모 전송을 피해야 하는 경우 확인]
                if (connMgr.isActiveNetworkMetered) {
                    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
                        when (connMgr.restrictBackgroundStatus) {
                            ConnectivityManager.RESTRICT_BACKGROUND_STATUS_ENABLED -> {
                                // [데이터 절약 모드 활성]
                                returnData = true
                                M_LOG = "Success : RESTRICT_BACKGROUND_STATUS_ENABLED"
                            }
                            ConnectivityManager.RESTRICT_BACKGROUND_STATUS_WHITELISTED ->
                                // [앱이 데이터 세이버를 우회하도록 허용]
                                M_LOG = "Success : RESTRICT_BACKGROUND_STATUS_WHITELISTED"
                            ConnectivityManager.RESTRICT_BACKGROUND_STATUS_DISABLED ->
                                // [데이터 절약 모드 비활성]
                                M_LOG = "Success : RESTRICT_BACKGROUND_STATUS_DISABLED"
                            else -> M_LOG = "Error : Status Check Default"
                        }
                    } else {
                        M_LOG = "Error : Device Os Version Low"
                    }
                } else {
                    // [대규모 전송 피하지 않음]
                    M_LOG = "Success : Device Not on a Metered Network"
                }

            } catch (e: Exception) {
                e.printStackTrace()
                M_LOG = "Exception : " + e.message.toString()
            }


            // [로그 출력 실시]
            //*
            // ===============================================================
            S_Log._F_(mContext, "앱 데이터 절약 모드 활성 상태 확인", arrayOf(
                "M_LOG :: $M_LOG",
                "RETURN :: $returnData"
            ))
            // ===============================================================
            // */


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

 

반응형
Comments