美文网首页
Android网络状态监听

Android网络状态监听

作者: 啊噜啊噜 | 来源:发表于2019-12-20 14:56 被阅读0次

1.添加权限

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

2.获取ConnectivityManager

val connectivityManager = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                    application.getSystemService(ConnectivityManager::class.java) ?: null
                } else {
                    application.getSystemService(Context.CONNECTIVITY_SERVICE)?.let {
                        it as ConnectivityManager
                    }
                }

3监听网络状态

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {//大于Android N的版本

     val networkRequest = NetworkRequest.Builder()
                        .addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR)
                        .addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
                        .build()
     connectivityManager?.registerNetworkCallback(networkRequest, object :
           ConnectivityManager.NetworkCallback() {
                 override fun onAvailable(network: Network) {//有可用网络
                     super.onAvailable(network)
                    val networkCapabilities = connectivityManager.getNetworkCapabilities(network)
                            networkCapabilities?.let {
                              //获取网络类型
                                val isWIFI = it.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)
                                val isMobile = it.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)
                             
                        }

                        override fun onLost(network: Network) {
                            super.onLost(network)
                           //网络断开

                        }

                        override fun onUnavailable() {
                            super.onUnavailable()
                            //无可用网络
                            
                        }
                    })
                } else {//Android N以下通过广播监听
                   
                    val intentFilter = IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION)
                    application.registerReceiver(NetworkStateReceiver(), intentFilter)
                }
            } catch (e: Exception) {
                e.printStackTrace()
            }
  • 网络监听广播
 class NetworkStateReceiver : BroadcastReceiver() {
     override fun onReceive(context: Context?, intent: Intent?) {
         context?.getSystemService(Context.CONNECTIVITY_SERVICE)?.let {
                val cm = it as ConnectivityManager
                cm.activeNetworkInfo?.let { networkInfo ->
                    networkInfo.type//网络类型
                    networkInfo.isConnected//是否连接
                }
            }
     }

}

相关文章

  • Android监听网络状态

    几乎所有的安卓应用都会用到网络,除去极少数纯单机的应用。而在应用使用网络的过程中,必然会收到网络状态的影响。特别是...

  • Android网络状态监听

    1.添加权限 2.获取ConnectivityManager 3监听网络状态 网络监听广播

  • Android 检测网络类型及是否能用

    Android 中网络连接检测和使用ping检测网络是否可访问Android:检测网络状态&监听网络变化 获得Co...

  • (笔记)Android监听网络状态

    在Android中对于网络状态的监听,这里做最简单的一种。直接上步骤:1、首先在Activity或者Fragmen...

  • Android广播监听网络状态

    1.先说一下广播,广播分为两种:静态广播和动态广播。静态广播即是静态注册的,而动态广播是代码动态注册。静态注册是通...

  • Android网络状态变化监听

    Android网络状态监听实现 功能分析 背景介绍 为了给用户一个好的使用体验,尤其是一些视频、图片类型的app,...

  • Android监听网络状态框架

    先来写个最简单的框架吧。最普通的素质三连。1.加权限 2. 注册广播 3.添加回调 就这么简单,让我们开始吧。 看...

  • Android监听网络连接状态变化

    对于Android监听网络连接状态变化,网上太多这类资料了,而且对于网络连接状态和网络开关状态很容易混淆不清。 对...

  • Android 判断网络连接状态

    在Android上,我们需要对不同的网络情况做出一些操作。官方提供了监听网络状态变化的广播,用来监听网络的变化情况...

  • AFNetwork

    //设置网络监听 (void)monitorNetworking{//监听网络状态AFNetworkReachab...

网友评论

      本文标题:Android网络状态监听

      本文链接:https://www.haomeiwen.com/subject/jdcinctx.html