투케이2K

427. (android/java) [android 12 / target 31] [유틸 파일] getNetworkConnect - 현재 연결된 네트워크 상태 확인 실시 본문

Android

427. (android/java) [android 12 / target 31] [유틸 파일] getNetworkConnect - 현재 연결된 네트워크 상태 확인 실시

투케이2K 2022. 12. 15. 23:19

[개발 환경 설정]

개발 툴 : AndroidStudio

 

[소스 코드]

    // TODO [현재 연결된 네트워크 상태 확인 메소드 : 타겟 31 대응]
    public static Boolean getNetworkConnect(Context mContext) {

        /**
         * // -----------------------------------------
         * [getNetworkConnect 메소드 설명]
         * // -----------------------------------------
         * 1. 현재 사용자 모바일 디바이스 기기 네트워크 연결 상태 체크
         * // -----------------------------------------
         * 2. 사전 퍼미션 설정 : <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
         * // -----------------------------------------
         * 3. 호출 방법 : if (C_StateCheck.getNetworkConnect(A_Main.this) == true) { } else { }
         * // -----------------------------------------
         * */


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


        try {
            // [ConnectivityManager 생성]
            ConnectivityManager cm = (ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE);


            // [버전 분기 처리]
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { // [마시멜로우 이상]

                NetworkCapabilities networkCapabilities = cm.getNetworkCapabilities(cm.getActiveNetwork());
                if (networkCapabilities != null){
                    if(networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)){
                        networkName = "[capabilities] WIFI";
                    }
                    else if (networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)){
                        networkName = "[capabilities] MOBILE";
                    }
                    else {
                        returnData = false;
                        networkName = "[capabilities] network is null";
                    }
                }
                else {
                    returnData = false;
                    networkName = "[ERROR] networkCapabilities is null";
                }
            }
            else { // [마시멜로우 미만]

                NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
                if (activeNetwork != null) {
                    if (activeNetwork.getType() == ConnectivityManager.TYPE_WIFI) {
                        networkName = "[activeNetwork] WIFI";
                    } else if (activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE) {
                        networkName = "[activeNetwork] MOBILE";
                    } else {
                        returnData = false;
                        networkName = "[activeNetwork] network is null";
                    }
                } else {
                    returnData = false;
                    networkName = "[ERROR] activeNetwork is null";
                }
            }

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


        // [로그 출력 실시]
        Log.i("---","---" + "\n");
        Log.d("//===========//","================================================");
        Log.i("","\n"+"[C_StateCheck >> getNetworkConnect() :: 현재 연결된 네트워크 상태 확인]");
        Log.i("","\n"+"-----------------------------------------");
        Log.i("","\n"+"[NETWORK :: "+ networkName +"]");
        Log.i("","\n"+"-----------------------------------------");
        Log.i("","\n"+"[RETURN :: "+ returnData +"]");
        Log.d("//===========//","================================================");
        Log.i("---","---" + "\n");


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

[결과 출력]


반응형
Comments