본문 바로가기
JAVA

[Android/JAVA] 인터넷 연결 상태 확인하는 방법(코드)

by 고체물리학 2021. 8. 31.

안드로이드로 개발을 하다 보면 네트워크 상태에 따라 예외 처리하는 경우가 생긴다

네트워크 연결이 되어있을 때만 동작해야하는 경우 등

확인하는 방법은 아래 코드와 같다

 

 

	public static boolean getNetwork(Context context){
		boolean enable = false;
		ConnectivityManager manager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
		NetworkInfo wifi = manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
		NetworkInfo mobile = manager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
		NetworkInfo wimax = manager.getNetworkInfo(ConnectivityManager.TYPE_WIMAX);
		NetworkInfo ethernet = manager.getNetworkInfo(ConnectivityManager.TYPE_ETHERNET);
		if (wifi != null) {
		    if (wifi.isAvailable() && wifi.isConnected()) {
		    	enable = true;
		    }
		}
		if (mobile != null) {
		    if (mobile.isAvailable() && mobile.isConnected()) {
		    	enable = true;
		    }
		}	
		if (wimax != null) {
		    if (wimax.isAvailable() && wimax.isConnected()) {
		    	enable = true;
		    }
		}
		
		if (ethernet != null) {
		    if (ethernet.isAvailable() && ethernet.isConnected()) {
		    	enable = true;
		    }
		}
		return enable;
	}

Context.CONNECTIVITY_SERVICE은 네트워크 연결 상태에 대한 쿼리를 응답하여 네트워크 연결이 변경됐을 때 알려준다

NetworkInfo는 현재 연결된 네트워크의 종류를 판별해준다

 

위의 코드는 wifi, mobile, wimax, ethernet 4종류의 네트워크 중 한 개라도 연결되어있으면 true로 변환하는 함수이다

 

 

한꺼번에 사용해도 좋고 4가지 중 한 개만 써도 되고

리턴 값을 불리언 값이 아닌 정수형 변수로 사용해서 switch - case문으로 어떤 네트워크에 연결되었는지 확인하는 함수를 만들어도 되고~

 

무궁무진하게 사용할 수 있다.

 

반응형

댓글