diff options
author | Treehugger Robot <android-test-infra-autosubmit@system.gserviceaccount.com> | 2023-11-13 09:14:46 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2023-11-13 09:14:46 +0000 |
commit | 65953636f94c92c032b2bc8f1249b189fbd14cd6 (patch) | |
tree | 03cf5b43e9e3b6e37e017e88bf1047142be7d364 | |
parent | f8f3a8e50a787f9b3d3169f1f77f01014de6e873 (diff) | |
parent | 992de231dbbc1c55a844727fc7231280cd896911 (diff) | |
download | TvSettings-65953636f94c92c032b2bc8f1249b189fbd14cd6.tar.gz |
Merge "Net: IPv6/IPv4 will not disaply when hot-plug in Ethernet [1/1]" into main
-rw-r--r-- | Settings/src/com/android/tv/settings/connectivity/ConnectivityListener.java | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/Settings/src/com/android/tv/settings/connectivity/ConnectivityListener.java b/Settings/src/com/android/tv/settings/connectivity/ConnectivityListener.java index 8ad1f25bf..f75527580 100644 --- a/Settings/src/com/android/tv/settings/connectivity/ConnectivityListener.java +++ b/Settings/src/com/android/tv/settings/connectivity/ConnectivityListener.java @@ -54,6 +54,11 @@ import com.android.settingslib.wifi.WifiTracker; import java.util.ArrayList; import java.util.List; +import java.util.Objects; + +import android.net.ConnectivityManager.NetworkCallback; +import android.os.Handler; + /** * Listens for changes to the current connectivity status. */ @@ -93,6 +98,8 @@ public class ConnectivityListener implements WifiTracker.WifiListener, Lifecycle private int mNetworkType; private String mWifiSsid; private int mWifiSignalStrength; + private final Handler mHandler = new Handler(); + private LinkProperties mLateLp = null; private final InterfaceStateListener mEthernetListener; private final ArrayMap<String, IpConfiguration> mAvailableInterfaces = new ArrayMap<>(); private final Handler mUiHandler = ThreadUtils.getUiThreadHandler(); @@ -166,6 +173,7 @@ public class ConnectivityListener implements WifiTracker.WifiListener, Lifecycle telephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_SIGNAL_STRENGTHS); } + mConnectivityManager.registerDefaultNetworkCallback(mNetworkCallback, mHandler); if (mEthernetManager != null) { mEthernetManager.addInterfaceStateListener(r -> mUiHandler.post(r), mEthernetListener); @@ -198,6 +206,7 @@ public class ConnectivityListener implements WifiTracker.WifiListener, Lifecycle if (telephonyManager != null) { telephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_NONE); } + mConnectivityManager.unregisterNetworkCallback(mNetworkCallback); if (mEthernetManager != null) { mEthernetManager.removeInterfaceStateListener(mEthernetListener); } @@ -499,10 +508,32 @@ public class ConnectivityListener implements WifiTracker.WifiListener, Lifecycle } } + public void onIpAddrChanged() { + if (mListener != null) { + mListener.onConnectivityChange(); + } + } + public interface Listener { void onConnectivityChange(); } + private final NetworkCallback mNetworkCallback = new NetworkCallback() { + @Override + public void onLinkPropertiesChanged(Network network, LinkProperties lp) { + + if (mLateLp != null) { + if (!Objects.equals(mLateLp, lp)) { + if ((lp.hasIpv4Address() && !mLateLp.hasIpv4Address()) + ||(lp.hasGlobalIpv6Address() && !mLateLp.hasGlobalIpv6Address())) { + onIpAddrChanged(); + } + } + } + mLateLp = lp; + } + }; + public interface WifiNetworkListener { void onWifiListChanged(); } |