Skip to content

ixyxj/android-network-state

Repository files navigation

android-network-state

Android network listener 兼容两种模式, 如果广播不能接受,就使用系统的NetworkCallback进行回调监听, 纯kotlin实现.

效果

image

使用

加入权限

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

引用

implementation 'com.xyxj.support:network-state:1.0.0'

在Application初始化, 回调默认延迟500毫秒,可以设置delay

NetworkManager.get().register(this).delay(0)

第一种广播监听

NetworkManager.get().addObserver(object : OnNetworkChangeListener {
    override fun onDisConnect() {
        tv_state.text = "网络异常"
    }

    override fun onConnected(netType: NetType) {
        tv_state.text = "网络状态: ${netType.name}"
    }

})

第二种系统监听

NetworkManager.get().registerCompat(this, @RequiresApi(Build.VERSION_CODES.LOLLIPOP)
    object : ConnectivityManager.NetworkCallback() {
        override fun onUnavailable() {
            super.onUnavailable()
        }

        override fun onAvailable(network: Network?) {
            super.onAvailable(network)
        }
    })

问题

由于Android7.0取消了默认广播, 8.0取消了大量的广播, 之前静默注册的不能使用了, 使用动态注册. 动态开关网络API变动, 从ConnectivityManager的setMobileDataEnabled方法,改变到TelephonyManager的setDataEnabled方法. 由于系统安全原因, 系统版本高会报异常,谨慎使用.

结束

看到这点个赞呗

About

Android network listener 两种模式监听

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published