728x90
private fun checkInternet(): Boolean{
val cm = getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
val isConnected: Boolean = if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
val net = cm.getNetworkCapabilities(cm.activeNetwork)
if(net != null) {
net.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) || net.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)
} else
false
}
else {
val activeNetwork = cm.activeNetworkInfo
activeNetwork?.isConnectedOrConnecting == true
}
return when(isConnected){
true -> cm.isActiveNetworkMetered
false -> {
Handler(Looper.getMainLooper()).postDelayed({
Toast.makeText(applicationContext, "인터넷을 연결해주세요", Toast.LENGTH_SHORT).show()
}, 0)
true
}
}
}
ConnectivityManager를 이요한 코드입니다. 시스템 서비스에서 CONNECTIVITY_SERVICE를 매니저로 불러옵니다.
ConnectivityManager.activeNetworkInfo는 API Level 29 이후로 사용중지 됐으므로 이전과 이후를 위한 코드를 만들어 줍니다.
Handler로 Toast메시지를 감싸서 스레드에서도 작동되도록 만들었습니다.
참고
728x90
'안드로이드' 카테고리의 다른 글
앱바 만들기 (0) | 2022.06.13 |
---|---|
BottomNav만들기 (0) | 2022.06.13 |