NetworkStateReceiver.kt 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. package ml.adamsprogs.bimba
  2. import android.net.ConnectivityManager
  3. import android.content.Intent
  4. import android.content.BroadcastReceiver
  5. import android.content.Context
  6. class NetworkStateReceiver : BroadcastReceiver() {
  7. private val onConnectivityChangeListeners = HashSet<OnConnectivityChangeListener>()
  8. override fun onReceive(context: Context, intent: Intent) {
  9. if (intent.extras != null) {
  10. val connectivityManager = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
  11. val ni = connectivityManager.activeNetworkInfo
  12. if (ni != null && ni.isConnectedOrConnecting) {
  13. for (listener in onConnectivityChangeListeners)
  14. listener.onConnectivityChange(true)
  15. } else if (intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, java.lang.Boolean.FALSE)) {
  16. for (listener in onConnectivityChangeListeners)
  17. listener.onConnectivityChange(false)
  18. }
  19. }
  20. }
  21. interface OnConnectivityChangeListener {
  22. fun onConnectivityChange(connected: Boolean)
  23. }
  24. companion object {
  25. lateinit var manager: ConnectivityManager
  26. fun init(context: Context) {
  27. manager = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
  28. }
  29. fun isNetworkAvailable(): Boolean {
  30. val activeNetworkInfo = manager.activeNetworkInfo
  31. return activeNetworkInfo != null && activeNetworkInfo.isConnected
  32. }
  33. }
  34. }