투케이2K

472. (Android/Java) [android 12 / target 31] [유틸 파일] isWifiConnected : 현재 와이파이 연결 상태 확인 본문

Android

472. (Android/Java) [android 12 / target 31] [유틸 파일] isWifiConnected : 현재 와이파이 연결 상태 확인

투케이2K 2023. 2. 9. 22:43

[개발 환경 설정]

개발 툴 : AndroidStudio

 

[소스 코드]

    // -----------------------------------------------------------------------------------------
    // TODO [SEARCH FAST] : [isWifiConnected] : 현재 와이파이 연결 상태 확인
    // -----------------------------------------------------------------------------------------
    public static Boolean isWifiConnected(Context mContext) {

        /**
         * // -----------------------------------------
         * [isWifiConnected 메소드 설명]
         * // -----------------------------------------
         * 1. 현재 와이파이 연결 상태 확인
         * // -----------------------------------------
         * 2. 호출 방법 : C_StateCheck.isWifiConnected(A_Intro.this);
         * // -----------------------------------------
         * 3. 리턴 데이터 : 와이파이가 연결된 경우 true / 아니면 false
         * // -----------------------------------------
         * 4. 필요 퍼미션 설정 :
         *
         * <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
         * // -----------------------------------------
         * */


        // [리턴 변수 선언 실시]
        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)){
                        returnData = false;
                        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) {
                        returnData = false;
                        networkName = "[activeNetwork] MOBILE";
                    } else {
                        returnData = false;
                        networkName = "[activeNetwork] network is null";
                    }
                } else {
                    returnData = false;
                    networkName = "[ERROR] activeNetwork is null";
                }
            }

        }
        catch (Exception e) {
            e.printStackTrace();
            returnData = false;
            networkName = String.valueOf(e.getMessage());
        }


        // [로그 출력 실시]
        S_Log.ltd("================================================");
        S_Log.cnt("["+ACTIVITY_NAME+" >> "+C_Util.getNowMethod(1)+" :: 현재 와이파이 연결 상태 확인]");
        S_Log.cnt("-----------------------------------------");
        S_Log.cnt("[NETWORK :: "+String.valueOf(networkName)+"]");
        S_Log.cnt("-----------------------------------------");
        S_Log.cnt("[RETURN :: "+String.valueOf(returnData)+"]");
        S_Log.lbd("================================================");


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

 

[결과 출력]

 

D///===========//: ================================================
I/: [C_StateCheck >> isWifiConnected :: 현재 와이파이 연결 상태 확인]
I/: -----------------------------------------
I/: [NETWORK :: [capabilities] MOBILE]
I/: -----------------------------------------
I/: [RETURN :: false]
D///===========//: ================================================

 

반응형
Comments