В моем приложении я хочу уведомить, если устройство потеряло сетевое соединение и снова ли оно подключено к сети.
Итак, я написал Broadcastreceiver следующим образом:
class NetworkReceiver() : BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {
if (isNetworkConnected(context)) {
//do some stuff
} else {
//do smoke stuff
}
}
private fun isNetworkConnected(context: Context?): Boolean {
val connectivityManager: ConnectivityManager? = context?.getSystemService(Context.CONNECTIVITY_SERVICE)
as ConnectivityManager?
if (connectivityManager != null) {
if (Build.VERSION.SDK_INT < 23) {
val networkInfo: NetworkInfo? = connectivityManager.activeNetworkInfo
if (networkInfo != null) {
return networkInfo.isConnected
&& networkInfo.type == ConnectivityManager.TYPE_WIFI
|| networkInfo.type == ConnectivityManager.TYPE_MOBILE
}
} else {
val network: Network? = connectivityManager.activeNetwork
if (network != null) {
val networkCapabilities = connectivityManager.getNetworkCapabilities(network)
return (networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)
|| networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)
|| networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_VPN))
}
}
}
return false
}
Мой вопрос, как я могу зарегистрировать этот широковещательный приемник в своей активности, чтобы вызвать NetworkReceiver
, когда мое устройство подключено или отключено отсеть.Какой IntentFilter
мне следует использовать?