연결 관리자

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

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

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

boolean isAvailable()
boolean isConnected()
boolean isRoaming()
NetworkInfo.State getState()

예제 소스

import android.app.Activity;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.widget.EditText;

public class ConMgr extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        EditText result = (EditText) findViewById(R.id.EditText01);
        String sResult = "";
        
        //연결 관리자 ConnectivityManager 객체 가져오기
        ConnectivityManager mgr = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
        
        //모든 연결 방법에 대한 정보를 한꺼번에 구함
        NetworkInfo[] ani = mgr.getAllNetworkInfo();        
        for(NetworkInfo n : ani) {
        	sResult += n.toString() + "\n\n";
        }
        
        //현재 액티브 상태인 연결 방법을 구함
        NetworkInfo ni = mgr.getActiveNetworkInfo();
        sResult += "Active : \n" + ni.toString() + "\n";
        
        //특정 타입의 연결 방법에 대한 정보만 구함(2가지 연결 타입을 상수로 제공)
        //NetworkInfo ani = mgr.getNetworkInfo(mgr.TYPE_MOBILE | mgr.TYPE_WIFI);
        
        result.setText(sResult);
        
    }
}

권한 설정

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

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

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

'안드로이드 정복' 카테고리의 다른 글

스레드와 핸들러  (1) 2010.08.13
네트워크 - 비동기 다운로드  (0) 2010.08.09
네트워크 - HTML 읽기  (1) 2010.08.09
옵션 메뉴 만들기  (0) 2010.08.02
타이머 이벤트 (Handler, CountDownTimer)  (2) 2010.08.02
Posted by 피곤키오
,