본문 바로가기

프로그래밍/안드로이드

네트워크 - 인터넷 연결 관리자


연결 관리자

네트워크에 대한 정보를 구할때에는 연결 관리자의 다음 메서드를 호출합니다.

1.NetworkInfo[] getAllNetworkInfo()
2.NetworkInfo getActiveNetworkInfo()
3.NetworkInfo getNetworkInfo(ConnectivityManager.TYPE_MOBILE | ConnectivityManager.TYPE_WIFI)

네트워크의 상태나 특성에 대한 정보를 가지는 NetworkInfo 객체에서는 다음과 같은 메소드가 제공됩니다.

1.boolean isAvailable()
2.boolean isConnected()
3.boolean isRoaming()
4.NetworkInfo.State getState()

예제 소스

01.import android.app.Activity;
02.import android.net.ConnectivityManager;
03.import android.net.NetworkInfo;
04.import android.os.Bundle;
05.import android.widget.EditText;
06.  
07.public class ConMgr extends Activity {
08.    /** Called when the activity is first created. */
09.    @Override
10.    public void onCreate(Bundle savedInstanceState) {
11.        super.onCreate(savedInstanceState);
12.        setContentView(R.layout.main);
13.          
14.        EditText result = (EditText) findViewById(R.id.EditText01);
15.        String sResult = "";
16.          
17.        //연결 관리자 ConnectivityManager 객체 가져오기
18.        ConnectivityManager mgr = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
19.          
20.        //모든 연결 방법에 대한 정보를 한꺼번에 구함
21.        NetworkInfo[] ani = mgr.getAllNetworkInfo();        
22.        for(NetworkInfo n : ani) {
23.            sResult += n.toString() + "\n\n";
24.        }
25.          
26.        //현재 액티브 상태인 연결 방법을 구함
27.        NetworkInfo ni = mgr.getActiveNetworkInfo();
28.        sResult += "Active : \n" + ni.toString() + "\n";
29.          
30.        //특정 타입의 연결 방법에 대한 정보만 구함(2가지 연결 타입을 상수로 제공)
31.        //NetworkInfo ani = mgr.getNetworkInfo(mgr.TYPE_MOBILE | mgr.TYPE_WIFI);
32.          
33.        result.setText(sResult);
34.          
35.    }
36.}

권한 설정

장비의 네트워크 상태를 조사하려면 매니페스트에 다음과 같이 퍼미션을 주어야합니다.

1.<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

에뮬레이터는 6가지의 연결 방법을 제공합니다. 장비가 인터넷에 연결되어 있으면 모바일 네트워크를 통해 인터넷에 연결 되지만. 액티브 연결이 없는 상태라면 적절하게 에러 처리를 해주어야 합니다.

출처 : http://markan82.tistory.com/31