Skip to content

Network Interface

Android sample code using sdk network interface

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
    val connectivityManager = getSystemService(CONNECTIVITY_SERVICE) as ConnectivityManager

    val request: NetworkRequest = NetworkRequest.Builder()
            .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
            .addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
            .addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR)
            .build()

    connectivityManager.registerNetworkCallback(request, object : ConnectivityManager.NetworkCallback() {

        override fun onAvailable(network: Network) {
            super.onAvailable(network)
            Log.i("sdk", "Network available")
            SDKRuntime.setNetworkAvailable(true)
        }

        override fun onLost(network: Network) {
            super.onLost(network)
            Log.i("sdk", "Network Lost")
            SDKRuntime.setNetworkAvailable(false)
        }

        override fun onUnavailable() {
            super.onUnavailable()
            Log.i("sdk", "Network unavailable")
            SDKRuntime.setNetworkAvailable(false)
        }
    })

} else {
    val filter = IntentFilter()
    filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION)

    registerReceiver(object : BroadcastReceiver(){
        override fun onReceive(context: Context, intent: Intent) {
            if (intent.action == ConnectivityManager.CONNECTIVITY_ACTION) {
                val networkActive = isNetworkActive(context)
                Log.i("sdk", "Network status changed : $networkActive")
                SDKRuntime.setNetworkAvailable(networkActive)
            }
        }

        private fun isNetworkActive(context: Context): Boolean {
            val cm = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
            val networkInfo = cm.activeNetworkInfo
            return networkInfo != null && networkInfo.isAvailable && networkInfo.isConnected
        }

    }, filter)
}