如何知道设备何时连接到WiFi /移动/互联网?

时间:2019-08-30 08:40:09

标签: android android-wifi android-progressbar

我有一个需要从后端服务器获取一些数据的按钮。设备未连接到WiFi /移动/互联网时,该按钮被禁用。问题是,当按下WiFi按钮时,它需要一些时间才能真正连接(2-3秒)。如何知道设备何时连接,以便我可以在这段时间内显示一个ProgressBar?谢谢

2 个答案:

答案 0 :(得分:2)

THIS这样的问题中,有很多方法。简而言之,您应将BroadcastReceiverIntentFilter结合使用,并进行ConnectivityManager.CONNECTIVITY_ACTION操作。检出NetworkInfo.State DOC并选择合适的报表(使用所需的回调创建自己的侦听器)

如果您只能负担newer APIs,则可以使用NetworkCallback,在DOC中,您可以看到所有方法,请适当使用。但是令人遗憾的是,由于Android的碎片化,我怀疑是第一个更好的方法。

还请记住,由于Android N广播在清单中声明时不会触发,请使用Java示例,并在Activity生命周期内取消注册

答案 1 :(得分:0)

fun isInternetOncheck(context: Context): Boolean {
            val cm = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
            val networkInfo = cm.activeNetworkInfo
            return networkInfo != null && networkInfo.isConnectedOrConnecting
        }
if (!NetworkCaller.isInternetOncheck(context!!)) {
     println("no internet connection")

} else {

     fetchDataFromServer()
 }
fetchDataFromServer(){
    showProgressbar()
    ......
    ......
    //code for fetching data
    ......
    ......
    hideProgressbar()
}