0

In my application I want use RxJava and I want check internet connection.
I write below code, but just check first time when application started!
I want check every time and when internet connection lost or available show user!

My class codes :

class InternetConnection {

    @Suppress("DEPRECATION")
    private fun isConnectedOld(context: Context): Boolean {
        val connManager = context.getSystemService(CONNECTIVITY_SERVICE) as ConnectivityManager
        val networkInfo = connManager.activeNetworkInfo
        return networkInfo!!.isConnected

    }

    @RequiresApi(Build.VERSION_CODES.M)
    private fun isConnectedNewApi(context: Context): Boolean {
        val cm = context.getSystemService(CONNECTIVITY_SERVICE) as ConnectivityManager
        val capabilities = cm.getNetworkCapabilities(cm.activeNetwork)
        return capabilities?.hasCapability(NET_CAPABILITY_INTERNET) == true
    }

    fun isConnected(context: Context): Observable<Boolean> {
        return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            Observable.just(isConnectedNewApi(context))
        } else {
            Observable.just(isConnectedOld(context))
        }
    }
}

Activity codes :

class TestCheckNetworkActivity : AppCompatActivity() {

    private lateinit var binding: ActivityTestCheckNetworkBinding

    private val internet by lazy { InternetConnection() }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityTestCheckNetworkBinding.inflate(layoutInflater)
        setContentView(binding.root)

        internet.isConnected(this)
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe {
                binding.checkNetTxt.text = it.toString()
            }
    }
}

How can I change my codes for check internet for every time, not just when application created ?

Dr.KeyOk
  • 608
  • 1
  • 6
  • 13

0 Answers0