안드로이드 네트워크 연결상태 확인

2019. 8. 27. 00:32 개발 이야기/android

 

 

오늘은 안드로이드의 네트워크 연결 상태를 확인하는 로직을 구현해 볼게요!

 

엄청나게 간단합니다!

 

일단 권한 설정부터!

 

    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

 

와이파이 상태 확인 권한과 네트워크 상태 확인 권한이 필요해요!

 

그리고 사용방법에 따라 기획 방법에 따라 

 

조금씩! 다르게 코딩을 할텐데요!

 

가장 기초적으로

 

연결 됐으면! true!

 

안됬으면! false!

 

    static Boolean isConnected(Context context) {
        ConnectivityManager cm =
                (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo ni = cm.getActiveNetworkInfo();

        return ni != null && ni.isConnected();
    }

자 이렇게 코드를 넣어주면 연결됐으면 true!

 

아닌 경우 false를 리턴해주겠죠!

 

인터넷 연결이 안 된 경우 토스트를 날려주거나 해도 되겠죠?

 

자. 그럼 이런 경우도 있죠

 

WIFI연결 시에만 다운로드하도록 설정

 

혹은 WIFI연결 시에만 다운로드됨

 

이런 식으로 기획된 아이들은 조금 다르게 로직을 짜야하는데요

 

    static int isConnected(Context context) {
        ConnectivityManager cm =
                (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo ni = cm.getActiveNetworkInfo();
        if (ni != null && ni.isConnected()) {
            if (ni.getType() == ConnectivityManager.TYPE_MOBILE) {
//                3g,4g 인 경우
                return 1;
            } else if (ni.getType() == ConnectivityManager.TYPE_WIFI) {
//                WIFI인 경우
                return 2;
            }
        }
//        연결 안됨
        return 0;
    }

 

Boolean 자료형은 참/거짓 두 가지밖에 표현이 안되어서

 

int 자료형으로 변경하고 세 가지 리턴으로 나누었습니다!

 

이제 이 것을 응용해서 리퀘스트 보내는 곳마다 확인을 해주면 좋을 거 같아요!

 

인터넷이 연결되지 않은 경우!

토스트로 간단하게 

"인터넷 연결이 되어있지 않습니다"

 같은 문구를 날려주면 좋을 것 같아요!