gpt4 book ai didi

android - 监听 Internet 变化(无网络检测)

转载 作者:行者123 更新时间:2023-11-30 05:11:06 24 4
gpt4 key购买 nike

注册以下监听器是在互联网连接发生变化时通知您的应用,还是仅在网络连接发生变化时通知您的应用?

即使手机仍连接到同一网络,我也需要在互联网打开或关闭时收到通知。

<receiver
android:name="com.internetconnection_demo.InternetConnector_Receiver"
android:enabled="true" >
<intent-filter>

<!-- Intent filters for broadcast receiver -->
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
<action android:name="android.net.wifi.WIFI_STATE_CHANGED" />
<action android:name="android.net.wifi.STATE_CHANGE" />
</intent-filter>
</receiver>

最佳答案

如果您使用的是 Lollipop (API 21) 或更高版本,我不会选择 BroadcastReceiver 路线。尝试这样的事情:

fun monitorWifiConnection() {
var connectivityManager: ConnectivityManager = getSystemService(CONNECTIVITY_SERVICE) as ConnectivityManager
val builder = NetworkRequest.Builder()
.addTransportType(android.net.NetworkCapabilities.TRANSPORT_WIFI)
connectivityManager.registerNetworkCallback(builder.build(), getConnectivityManagerCallback())
}

private fun getConnectivityManagerCallback(): ConnectivityManager.NetworkCallback {
connectivityManagerCallback = object : ConnectivityManager.NetworkCallback() {
override fun onAvailable(network: Network?) {
//Connected to wifi
}

override fun onLost(network: Network?) {
//Lost connection to wifi
}
}
return connectivityManagerCallback
}

通过排除 NetworkCapabilities.TRANSPORT_CELLULAR 选项并包含 NetworkCapabilities.TRANSPORT_WIFI,您应该只收到有关 wifi 连接的通知。

关于android - 监听 Internet 变化(无网络检测),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53731391/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com