티스토리 뷰

개발을 진행 하다보면 네트워크를 이용한 여러가지 로직을 처리 하게 됩니다. 이럴때 네트워크 연결 유무를  receiver로 받아 처리 해야 하는 경우가 있습니다. 이럴때 사용되는 receiver에 대해서 알아보도록 하겠습니다.


NetworkReceiver.class

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.util.Log;
public class NetworkReceiver extends BroadcastReceiver {
 // BroadCast를 받앗을때 자동으로 호출되는 콜백 메소드
 @Override
 public void onReceive(Context context, Intent intent) {
  // 네트워크 변환 Receiver
  ConnectivityManager cm = (ConnectivityManager) context
    .getSystemService(Context.CONNECTIVITY_SERVICE);
  NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
  boolean isConnected = activeNetwork != null
    && activeNetwork.isConnectedOrConnecting();
  //TODO 네트워크 변환에 따른 이후 로직을 처리한다.
  //ex. noti,activity 호출,service 호출 등등
  Log.d("network Receiver""network isConnected :  " + isConnected);
 }
}
cs



AndroidManifest.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
<!--네트워크 상태에 접근 하기 위해 퍼미션 추가 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
 
<!--네트워크 변화를 감지 위해  'android.net.conn.CONNECTIVITY_CHANGE' 필터를 가지는 receiver를 등록-->
         <receiver
            android:name="com.test.network.NetworkReceiver"
            android:enabled="true"
            android:exported="false"            
            >
        <intent-filter >                   
            <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />            
        </intent-filter>            
        </receiver
cs



댓글