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 |