본문 바로가기
Android 개발/Android

Wifi / 3G 네트워크 연결 상태를 확인하는 ConnectivityManager

by Developer88 2017. 5. 23.
반응형

안드로이드 앱을 만들면서, Wifi나 3G를 사용해서 인터넷에 연결되어야 할 경우,

사용자의 스마트폰이 연결되어 있는지 체크해야 할 필요가 있습니다.


오늘은 이 경우에 어떻게 해야 하는지 정리해 보도록 하겠습니다. 



1. Permission 설정


안드로이드에서 코딩을 하면서, 항상 체크해봐야 할 것이 이 API가 Permission이 필요한 것인가 인데요.

네트워크 상태를 알아볼 때에도 역시나 permission이 필요합니다.

다행인 것은 동적 permission을 요구하지는 않으므로,

Manifest에서 android.permission.ACCESS_NETWORK_STATE 에 대해서 uses-permission태그를 추가해주면 됩니다.

(네트워크 사용에 대한 것이므로 internet 사용permission을 요청하는 android.permission.INTERNET 도 기본적으로 있어야 하겠죠)




2. ConnectivityManager 통해 네트워크 정보 얻기


안드로이드 시스템의 정보를 얻어오는 것이므로,

getSystemService메소드에 CONNECTIVITY_SERVICE를 인자로 주어서 ConnectivityManager의 객체를 얻어옵니다.


이 객체의 멤버 메소드인 getActivieNetworkInfo()를 통해서 현재 네트워크의 정보를 얻어올 수 있습니다.




위의 메소드로 부터 return받은 NetworkInfo객체는 유용한 메소드들을 많이 가지고 있는데요.

많은 메소드들 중에서도 가장 많이 쓰이는 것은 네트워크 연결이 되어있는지를 확인해주는 메소드인 isConnected입니다.

그리고 getType()메소드를 통해서 이것이 WIFI를 통해서 연결되어 있는지, 아니면, 3G나 WIFI등의 모바일 타입인지를 알 수 있는데요.

아래에서 구현해보도록 하겠습니다.




아래와 같이 구현하면, 네트워크가 연결되어 있는지, 그리고 네트워크가 연결되어 있다면 어떤 타입으로 되어 있는지를 알 수 있습니다.




실행해 보면 아래와 같이 네트워크 상태에 대한 정보를 얻을 수 있습니다.

재미있는 것은, 에뮬레이터로 돌리면 에뮬레이터를 돌리는 컴퓨터는 WIFI로 잡혀있지만,

모바일 네트워크로 연결되었다고 나오는데요.

스마트폰에서 실행해보시면 정상적으로 동작하는 걸 볼 수 있습니다.


728x90

댓글