问题描述
我尝试从 WiFi 网络获取互联网状态。因此,当设备没有通过 WiFi 连接到互联网时,我可以发出通知。
因此,我现在发现使用未弃用的方法进行操作的方法是使用 mutations: {
setimageData(state:any,infopackImageData: any) {
state.infoPackCreationTab = {
...state.infoPackCreationTab,infopackContents: state.infoPackCreationTab.infopackContents.filter(...)
};
(https://developer.android.com/reference/android/net/ConnectivityManager.NetworkCallback)
我使用 ConnectinityManager.NetworkCallback
当设备没有互联网数据时,我通过 .addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
但我想要的是一个回调,通过它连接的 WiFi 检测是否有互联网。所以我试图添加上面的两个项目,但它似乎不起作用。我所做的测试是将设备连接到热点,然后禁用来自热点的数据。但它不会触发回调。
这是我使用的代码(感谢 ConnectivityManager.NetworkCallback() -> onAvailable(Network network) method is not triggered when device connects to a internal wifi network),但存在相关问题:
.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
解决方法
要检查互联网连接,您需要在查询中包含 NET_CAPABILITY_VALIDATED。
public static final int NET_CAPABILITY_VALIDATED
表示此网络连接成功 验证。例如,对于具有 NET_CAPABILITY_INTERNET 的网络,它 表示已成功检测到 Internet 连接。
因此,您可以像这样更新代码:
private fun getNetworkRequest(): NetworkRequest {
return NetworkRequest.Builder()
.addTransportType(NetworkCapabilities.TRANSPORT_WIFI) // internet check works without this but need it for WiFi status
.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
.addCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED)
.build()
}