블로그 이미지
App 개발에 대한 내용을 다룰 예정입니다. AppleSherbet

카테고리

분류 전체보기 (39)
한국프로야구 어플 (18)
세미나 (2)
Java Development (13)
Android App소개 (3)
기타 (2)
당근마켓 (1)
Total296,640
Today3
Yesterday18
안드로이드 어플을 해보면 대부분의 어플이 3G혹은 WIFI망을 통해 데이터 통신을 하게된다. 현재 개발중인 앱또한 마찬가지여서 네트워크를 쓰는 엑티비티가 생성되기 전에 망 사용 가능 여부를 체크하는 코드를 삽입하였다.
다른 사이트에서 참고를 했었는데 어디였는지 기억이 안난다..;;

기본적으로 플랫폼에서 모든 API를 편하게 제공하기때문에 쉽게 구현할 수 있다.

1.ConnectivityManager m_NetConnectMgr= (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
- 위의 코드는 시스템으로 부터 서비스를 가져온다.

2. NetworkInfo info = m_NetConnectMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
- 가져온 서비스를 이용해 WIFI 관련 정보를 가져온다.

3. info.isAvailable() / info.isConnected()
- 위와 같은 메소드를 이용해 현재 망 상태를 점검한다.

이상의 3가지 정도가 기본이 된다.

소스코드


다음은 Network 정보를 체크하는 코드로 static으로 만들었다.
public class KBONetworkInfo {

	public static boolean IsWifiAvailable(Context context)
	{
		ConnectivityManager m_NetConnectMgr= (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
		boolean bConnect = false;
		try
		{
			if( m_NetConnectMgr == null ) return false;

			NetworkInfo info = m_NetConnectMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
			bConnect = (info.isAvailable() && info.isConnected());

		}
		catch(Exception e)
		{
			return false;
		}

		return bConnect;
	}

	public static boolean Is3GAvailable(Context context)
	{  
		ConnectivityManager m_NetConnectMgr= (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
		boolean bConnect = false;
		try
		{
			if( m_NetConnectMgr == null ) return false;
			NetworkInfo info = m_NetConnectMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
			bConnect = (info.isAvailable() && info.isConnected());
		}
		catch(Exception e)
		{
			return false;
		}

		return bConnect;
	}
}
엑티비티의 onCreate 안에서 간단히 체크해준다.
  
if (!KBONetworkInfo.IsWifiAvailable(this) && !KBONetworkInfo.Is3GAvailable(this))
{
	Toast.makeText(this, "네크워크에 연결할 수 없습니다.", Toast.LENGTH_LONG).show();
	return;
}

마지막으로 네트워크 상태를 접근하기 위한 권한을 추가해 주어야 한다.
  
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
신고
Posted by AppleSherbet

최근에 달린 댓글

최근에 받은 트랙백

글 보관함

티스토리 툴바