본문 바로가기
Android/Technic

getNetworkInfo deprecated 대응 (네트워크 연결상태 확인 구현)

by 등촌동 꼬북이 2021. 11. 5.

ConnectivityManager의 getNetworkInfo가 depreacted 되었다.

 

물론 좀 된 얘기지만..

 

아무튼 그래서 네트워크 연결 상태를 확인하는 코드를 다음과 같이 구현하였다.

 

public boolean isNetWorkAvailable(Context context) {
    try {
        ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(CONNECTIVITY_SERVICE);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { // Q 이상은 이렇게 대응 해야함
            NetworkCapabilities networkType = connectivityManager.getNetworkCapabilities(connectivityManager.getActiveNetwork());
            if (networkType != null) {
                return networkType.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) || 
                networkType.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR) || 
                networkType.hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET);
            }
        } else {
            NetworkInfo exOsNetworkInfo = connectivityManager.getActiveNetworkInfo(); // Q 미만은 여기로
            if (exOsNetworkInfo != null) {
                return (exOsNetworkInfo.getType() == ConnectivityManager.TYPE_WIFI) || 
                (exOsNetworkInfo.getType() == ConnectivityManager.TYPE_MOBILE) || 
                (exOsNetworkInfo.getType() == ConnectivityManager.TYPE_ETHERNET);
            }
        }
    } catch (Exception e) {
        return false;
    }
    return false;
}

 

OS 별로 대응도 가능 하도록 구현했고 WIFI, CELLULAR 그리고 진짜 간혹 이더넷;; 까지 대응할 수 있도록 구현했다..

 

아래처럼 구현해도 되는 듯

 

public boolean isNetWorkAvailable(Context context) {
    try {
        ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(CONNECTIVITY_SERVICE);
        NetworkCapabilities networkType = connectivityManager.getNetworkCapabilities(connectivityManager.getActiveNetwork());
        if (networkType != null) {
            return networkType.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) || 
            networkType.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR) || 
            networkType.hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    return false;
}

댓글