«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

올해는 머신러닝이다.

안드로이드 네트워크 상태 확인 및 변경 브로드케스트 본문

Android/Tip&Tech

안드로이드 네트워크 상태 확인 및 변경 브로드케스트

행복한 수지아빠 2011. 7. 11. 15:20
출처 : http://www.mtalking.com/?p=403
안드로이드 device 에서 3G나 WIFI 연결 정보를 알아볼때 사용
우선 AndroidManifest.xml에 " android.permission.ACCESS_NETWORK_STATE "  permission이 필요하다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
ConnectivityManager cManager;
NetworkInfo mobile;
NetworkInfo wifi;
  
cManager=(ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
mobile = cManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
wifi = cManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
  
if(mobile.isConnected()){
    //3G 연결되있음.
}
  
if(wifi.isCOnnected()){
    //wifi 연결되있음.
}
위 코드는 필요시 한번 정보를 가지고 오면 끝이다.
그러나 네트워크 상황이 변화될때마다 특정 작업을 수행해야  한다면 다음과 같이 해야한다.
우선 BroadcastReceiver를 상속받는 class 를 만든다
ex)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class TestReceiver extends BroadcastReceiver {
  
    String action;
  
    @Override
    public void onReceive(Context context, Intent intent) {
  
        action=intent.getAction();
  
        Log.d("TestReceiver","action : " + action);
  
        if(action.equals(ConnectivityManager.CONNECTIVITY_ACTION)){
  
            /*
  
            네트워크 변화가 생길때마다 이쪽으로 들어온다.
  
            */
       }
  
    }
  
}
그다음 AndroidManifest.xml에 등록을 해준다.
ex)
1
2
3
4
5
<receiver android:name =".TestReceiver">
    <intent-filter>
        <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
    </intent-filter>
</receiver>