Android를 개발하다 보면, 네트워크 통신 전에 꼭 해야 할 것이 있는데 이것이 바로 현재 단말기가 mobile network or Wifi에 연결되어 있는지 확인 후, 통신을 시도하게 된다.

오랜만에 코딩 하고 있는지라, api 23 부터 기존 아래의 코드는 deprecated 되었다.

   1: ConnectivityManager manager = (ConnectivityManager) MyApplication.mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
   2:         NetworkInfo mobile = manager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
   3:         NetworkInfo wifi = manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
   4:  
   5:         if (mobile.isConnected() || wifi.isConnected()) {
   6:  
   7:  
   8:         } else {
   9:             // WIFI, 3G 어느곳에도 연결되지 않았을때
  10:  
  11:         }

새로운 방식은 아래와 같다.

   1: ConnectivityManager cm = (ConnectivityManager) MyApplication.mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
   2:        NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
   3:        if (activeNetwork != null) {
   4:  
   5:            if (activeNetwork.getType() == ConnectivityManager.TYPE_WIFI && activeNetwork.isConnectedOrConnecting()) {
   6:                // wifi 연결중
   7:  
   8:            } else if (activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE && activeNetwork.isConnectedOrConnecting()) {
   9:                // 모바일 네트워크 연결중
  10:  
  11:            }
  12:            else
  13:            {
  14:                // 네트워크 오프라인 상태.
  15:            }
  16:        } else {
  17:            // 네트워크 null.. 모뎀이 없는 경우??
  18:        }

흠.. 별로 달라진 것이 없는 것 같지만, 이제 어떤 통신인지 구별도 가능하게 되었다..

MyApplication.mContext는 내가 만든 context를 저장하기 위한 전역 변수 역할을 하는 클래스이다..  필자는 어디서든 쓸 수 있도록 저렇게 쓴다.

다른 분들은 그 자리에는 자신이 만든 main Activity의 context를 넣자.

'android' 카테고리의 다른 글

안드로이드 RecyclerView 스크롤 감지  (0) 2016.04.26
UI Thread 사용법  (0) 2016.04.24
ListView를 대체할 새로운 컴포넌트 Recyclerview  (0) 2016.04.24

+ Recent posts