투케이2K

767. (Android/Java) [유틸 파일] getNetworkDataRestrictState : 앱 데이터 절약 모드 활성 상태 확인 본문

Android

767. (Android/Java) [유틸 파일] getNetworkDataRestrictState : 앱 데이터 절약 모드 활성 상태 확인

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

[개발 환경 설정]

개발 툴 : AndroidStudio

 

[소스 코드]

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

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


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


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

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

            // [대규모 전송을 피해야 하는 경우 확인]
            if (connMgr.isActiveNetworkMetered()) {

                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
                    switch (connMgr.getRestrictBackgroundStatus()) {
                        case RESTRICT_BACKGROUND_STATUS_ENABLED:
                            // [데이터 절약 모드 활성]
                            returnData = true;
                            M_LOG = "Success : RESTRICT_BACKGROUND_STATUS_ENABLED";
                            break;

                        case RESTRICT_BACKGROUND_STATUS_WHITELISTED:
                            // [앱이 데이터 세이버를 우회하도록 허용]
                            M_LOG = "Success : RESTRICT_BACKGROUND_STATUS_WHITELISTED";
                            break;

                        case RESTRICT_BACKGROUND_STATUS_DISABLED:
                            // [데이터 절약 모드 비활성]
                            M_LOG = "Success : RESTRICT_BACKGROUND_STATUS_DISABLED";
                            break;
                        default:
                            M_LOG = "Error : Status Check Default";
                            break;
                    }
                }
                else {
                    M_LOG = "Error : Device Os Version Low";
                }

            } else {
                // [대규모 전송 피하지 않음]
                M_LOG = "Success : Device Not on a Metered Network";
            }
        }
        catch (Exception e){
            e.printStackTrace();
            M_LOG = "Exception : " + String.valueOf(e.getMessage());
        }


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


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

[결과 출력]

 

W///===========//: ================================================
I/: [LOG :: CLASS PLACE :: com.example.javaproject.C_StateCheck.getNetworkDataRestrictState(C_StateCheck.java:1434)]
I/: ----------------------------------------------------
I/: [LOG :: NOW TIME :: 2024-04-09 09:18:13 화요일]
I/: ----------------------------------------------------
I/: [LOG :: DESCRIPTION :: 앱 데이터 절약 모드 활성 상태 확인]
I/: ----------------------------------------------------
I/: [LOG :: M_LOG :: Success : RESTRICT_BACKGROUND_STATUS_ENABLED]
I/: ----------------------------------------------------
I/: [LOG :: RETURN :: true]
W///===========//: ================================================

 

반응형
Comments