ConnectivityManager
를 사용하여 인터넷에 연결되어 있는지 확인하고 연결되어 있다면 어떤 유형의 연결이 설정되어 있는지 확인할 수 있습니다.
인터넷에 연결되어 있는지 확인
인터넷에 연결되어 있지 않으면 인터넷 리소스를 기반으로 업데이트를 실행할 수 없습니다. 인터넷 연결이 필요한 작업을 예약하기 위해 권장되는 방법은 WorkManager
를 사용하는 것입니다. 자세한 내용은 WorkManager로 작업 예약을 참조하세요. 또한 다음 스니펫에 나와 있는 메서드를 사용해 활성 네트워크를 대화식으로 쿼리하여 인터넷에 연결되어 있는지 확인할 수도 있습니다.
Kotlin
val cm = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager val activeNetwork: NetworkInfo? = cm.activeNetworkInfo val isConnected: Boolean = activeNetwork?.isConnectedOrConnecting == true
자바
ConnectivityManager cm = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo activeNetwork = cm.getActiveNetworkInfo(); boolean isConnected = activeNetwork != null && activeNetwork.isConnectedOrConnecting();
참고: getActiveNetworkInfo()
는 Android 10에서 지원 중단되었습니다. Android 10(API 수준 29) 이상을 타겟팅하는 앱에는 NetworkCallbacks
를 대신 사용하세요.
인터넷 연결 유형 확인
현재 사용 가능한 인터넷 연결 유형을 확인할 수도 있습니다.
기기 연결은 모바일 데이터, WiMAX, Wi-Fi 및 이더넷 연결로 제공될 수 있습니다. 다음 코드 샘플과 같이 활성 네트워크 유형을 쿼리하여 사용 가능한 대역폭에 따라 앱의 동작을 변경할 수 있습니다.
Kotlin
val cm = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager val isMetered = cm.isActiveNetworkMetered()
자바
ConnectivityManager cm = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE); boolean isMetered = cm.isActiveNetworkMetered();
참고: 앱이 Android 4.0(API 수준 15) 이하를 지원해야 하면 ConnectivityManager.isActiveNetworkMetered()
대신 ConnectivityManagerCompat.isActiveNetworkMetered
를 사용하세요.
모바일 데이터 비용은 Wi-Fi 및 이더넷 비용보다 상당히 높은 경향이 있습니다. 종량제 연결 사용 시 앱의 데이터 사용을 줄이려고 하거나 데이터 전송량 제한이 없는 연결을 사용할 때까지 데이터 사용을 연기해야 합니다.