Manifest에 추가
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Deprecated on Android 10(api 29)
val cm = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
val activeNetwork: NetworkInfo? = cm.activeNetworkInfo
val isConnected: Boolean = activeNetwork?.isConnectedOrConnecting == true
Android 11이상을 타겟팅하고 있는 경우
var isNetworkActive = false
private val networkCallBack = object : ConnectivityManager.NetworkCallback() {
override fun onAvailable(network: Network) {
isNetworkActive = true
}
override fun onLost(network: Network) {
isNetworkActive = false
}
}
// 콜백 등록
fun registerNetworkCallback(context: Context) {
val connectivityManager = getSystemService(context, ConnectivityManager::class.java)
val networkRequest = NetworkRequest.Builder()
.addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
.addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR)
.build()
connectivityManager?.registerNetworkCallback(networkRequest, networkCallBack)
}
// 콜백 해제
fun releaseNetworkCallback(context: Context) {
val connectivityManager = getSystemService(context, ConnectivityManager::class.java)
connectivityManager?.unregisterNetworkCallback(networkCallBack)
}
액티비티 생명주기 함수에서 처리
override fun onResume()
{
registerNetworkCallback(this)
super.onResume()
}
override fun onStop() {
releaseNetworkCallback(this)
super.onStop()
}
실시간으로 상태를 처리할 수 있도록 해놓고 사용한다.
'프로그래밍 > Android, iOS' 카테고리의 다른 글
[Android] 사이닝 처리 하기 (0) | 2022.12.09 |
---|---|
[Android] Resize Bitmap (0) | 2022.05.11 |
[Android] EditText 주로 쓰는 옵션 (0) | 2022.04.01 |
[Google Play Store] 어플 키워드 관련 정리 (0) | 2022.03.31 |
[Android] 2차 인증(2 factor authentication) (0) | 2022.03.30 |
댓글