[안드로이드 / Kotlin] 네트워크 상태 체크

2021. 11. 30. 15:35·Android
반응형

앱 개발에 있어 네트워크 상태를 체킹하는 것은 필수적입니다.

이번 포스트를 통해 안드로이드에서 간단하게 네트워크 상태를 체크하는 방법에 대해 알아보도록 하겠습니다.

 

<네트워크 상태를 나타내는 클래스 ConnectivityStatus>

class ConnectivityStatus(val context: Context) {
    private val cm = (context.getSystemService(Context.CONNECTIVITY_SERVICE)) as ConnectivityManager?

    fun getStatus(): Int {
        if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {    // 안드로이드 6이상
            val nc: NetworkCapabilities? = cm?.getNetworkCapabilities(cm.activeNetwork)

            nc?.let {
                if(nc.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)) return Val.NETWORK_STATE_WIFI
                else if(nc.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)) return Val.NETWORK_STATE_CELLULAR
            }
        } else {
            val info: NetworkInfo? = cm?.activeNetworkInfo

            info?.let {
                if(info.type == ConnectivityManager.TYPE_WIFI) return Val.NETWORK_STATE_WIFI
                else if(info.type == ConnectivityManager.TYPE_MOBILE) return Val.NETWORK_STATE_CELLULAR
            }
        }

        return Val.NETWORK_DISCONNECTED
    }
}

코드를 살펴보면 안드로이드 6이상(마시멜로)과 미만일때로 나누어지는 것을 볼 수 있습니다.

안드로이드 6이상부터 ConnectivityManager에서 NetworkInfo관련 함수들이 모두 deprecated 되었습니다. 

따라서 안드로이드 6이상부터는 NetworkCapabilities로 대체하게됩니다.

저같은경우 상수를 이용해서 네트워크 상태를

 

1) 와이파이

Val.NETWORK_STATE_WIFI

2) 셀룰러(데이터)

Val.NETWORK_STATE_CELLULAR

3) 연결없음

Val.NETWORK_DISCONNECTED

 나타냈습니다.

반응형

'Android' 카테고리의 다른 글

[안드로이드 / Kotlin] 블루투스 상태 체크  (0) 2021.12.11
[안드로이드 / Kotlin] 기기 해상도 가져오기  (0) 2021.12.03
[안드로이드 / Kotlin] 앱 재시작  (0) 2021.10.17
[안드로이드 / Kotlin] byte array를 hex string으로 변환  (0) 2021.09.14
[안드로이드 / Kotlin] 다크모드 설정  (0) 2021.09.07
'Android' 카테고리의 다른 글
  • [안드로이드 / Kotlin] 블루투스 상태 체크
  • [안드로이드 / Kotlin] 기기 해상도 가져오기
  • [안드로이드 / Kotlin] 앱 재시작
  • [안드로이드 / Kotlin] byte array를 hex string으로 변환
서주냥
서주냥
간단한 것도 기록하는 습관을 가지자
  • 서주냥
    DroidLog
    서주냥
  • 전체
    오늘
    어제
    • 전체보기 (58)
      • 알고리즘 (12)
        • 백준 (4)
        • 프로그래머스 (5)
        • 개념 (3)
      • Android (43)
        • Compose (1)
      • Java (2)
      • Kotlin (1)
  • 링크

    • GitHub
  • 인기 글

  • 태그

    debounce
    ConstraintLayout
    Coroutine
    이진 탐색
    viewpager2
    SnackBar
    블루투스
    textunit
    BLE
    최단 경로
    reified
    벨만 포드
    Coroutine Flow
    RecyclerView
    Hilt
    뷰모델
    다이나믹 프로그래밍
    moshi
    viewmodel
    클린 아키텍처
    코틀린
    프로그래머스
    안드로이드
    코루틴
    자바
    투 포인터
    FusedLocationProviderClient
    백준
    알고리즘
    Clean Architecture
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
서주냥
[안드로이드 / Kotlin] 네트워크 상태 체크

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.