오늘도 더 나은 코드를 작성하였습니까?

android 기기가 반드시 인터넷에 연결되어 있는지 확인 본문

문제해결

android 기기가 반드시 인터넷에 연결되어 있는지 확인

hik14 2021. 3. 15. 16:59

 

developer.android.com/training/monitoring-device-state/connectivity-status-type?hl=ko

 

연결 상태 및 연결 측정 모니터링  |  Android 개발자  |  Android Developers

ConnectivityManager를 사용하여 인터넷에 연결되어 있는지 확인하고 연결되어 있다면 어떤 유형의 연결이 설정되어 있는지 확인할 수 있습니다. 인터넷에 연결되어 있는지 확인 인터넷에 연결되어

developer.android.com

안드로이드 마쉬멜로우 이전 버전(api 23)에서 사용하던,  activeNetworkInfo가 디프리케이트 되었다

마쉬멜로우 이후 및 이전 모두 지원하는 코드 

private fun isInternetAvailable(context: Context): Boolean {
        var result = false
        val connectivityManager =
            context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        	// 마쉬멜로우 이후 
            val networkCapabilities = connectivityManager.activeNetwork ?: return false
            val actNw =
                connectivityManager.getNetworkCapabilities(networkCapabilities) ?: return false
            result = when {
                actNw.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) -> true
                actNw.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR) -> true
                actNw.hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET) -> true
                else -> false
            }
        } else {
        	// 마쉬멜로우 이전 
            val nwInfo = connectivityManager.activeNetworkInfo ?: return false
            return nwInfo.isConnected
        }
        return result
    }