안드로이드로 개발을 하다 보면 네트워크 상태에 따라 예외 처리하는 경우가 생긴다
네트워크 연결이 되어있을 때만 동작해야하는 경우 등
확인하는 방법은 아래 코드와 같다
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문으로 어떤 네트워크에 연결되었는지 확인하는 함수를 만들어도 되고~
무궁무진하게 사용할 수 있다.
반응형
'JAVA' 카테고리의 다른 글
[JAVA] URL에 올려진 파일 다운로드 하는 방법 (0) | 2021.11.04 |
---|---|
[Java] 바이트 배열 데이터 파일 저장하기 (0) | 2021.11.03 |
[JAVA] 문자타입을 정수형으로 변환하기(String to int) (2) | 2021.08.27 |
int형 정수를 2byte 배열로 변환 (0) | 2021.07.02 |
int 정수를 4byte 배열로 변환하기 (0) | 2021.06.30 |
댓글