gpt4 book ai didi

android - 如何检测网络变化?

转载 作者:行者123 更新时间:2023-11-29 14:41:59 25 4
gpt4 key购买 nike

我需要知道如何检测 Wi-Fi 网络中的开关,无论是自动还是手动,这都没有关系。当检测到开关时,是否有某种 Intent 在整个系统中广播?或者我是否必须通过调用 ConnectivityManager 上的方法来手动检查是否选择了新网络?

最佳答案

此时,我已经像这样修复了这个问题(还没有完全测试它,因为我目前没有第二个网络可用):

我扩展了 BroadcastReceiver 类

private class NetworkSwitcher extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (!action.equals(ConnectivityManager.CONNECTIVITY_ACTION)) {
return;
}
NetworkInfo networkInfo =
(NetworkInfo)intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO);
if (networkInfo.isConnected()) {
if (networkInfo.getType() == ConnectivityManager.TYPE_WIFI) {
Log.d(TAG, "Network type: " + networkInfo.getTypeName() +
" Network subtype: " + networkInfo.getSubtypeName());
getOwnIpAddress();
mClient.updateUnicastSocket(mOwnAddress, mUnicastPort);
}
}
else {
Log.e(TAG, "Network connection lost");
}
}
}

我将此类注册为接收器,并将过滤器设置为 ConnectivityManager.CONNECTIVITY_ACTION Intent (在 onResume() 中设置并在 onPause( ))。这应该会捕获任何自动 Wi-Fi 网络开关。 getOwnIpAddressWifiManager 中检索设备的 IP 地址。

我还发现,当我从另一个 Activity 返回到该 Activity 时它会起作用。

关于android - 如何检测网络变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6224438/

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