TIL:Connectivity Manager NetworkCallback

안드로이드 7.0부터는 리시버에서 connectivity_action 브로드캐스트를 수신하지 않는다. (Manifest에 등록할 경우 수신을 하지 않고 registerReceiver를 이용해 등록한 경우 여전히 수신 가능 - API 28 deprecated) 이 대신 networkcallback 인터페이스를 구현하여 네트워크 변경 여부를 수신할 수 있다.

val builder = NetworkRequest.Builder()
builder.addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR) //모바일 데이터 일 때만 호출

val cb = object:ConnectivityManager.NetworkCallback(){
    override fun onAvaliable(network:Network){
        super.onAvaliable()
        Log.e("onAvaliable", "모바일 데이터 연결됨")
    }
}

connMgr.registerNetworkCallback(builder.build(), cb) //콜백 등록
override fun onDestroy(){
    connMgr.unregisterNetworkCallback(cb)
}

References