diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/NetworkUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/NetworkUtils.java index a2a8ae0432843588da36e08862bed86998d67ea1..23eb3b3f00021021dd6411ca91add8b6deff0e60 100644 --- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/NetworkUtils.java +++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/NetworkUtils.java @@ -284,7 +284,7 @@ public final class NetworkUtils { NetworkType netType = NetworkType.NETWORK_NO; NetworkInfo info = getActiveNetworkInfo(); if (info != null && info.isAvailable()) { - if (info.getType() == ConnectivityManager.TYPE_ETHERNET) { + if (isEthernet()) { netType = NetworkType.NETWORK_ETHERNET; } else if (info.getType() == ConnectivityManager.TYPE_WIFI) { netType = NetworkType.NETWORK_WIFI; @@ -336,6 +336,28 @@ public final class NetworkUtils { return netType; } + /** + * Return whether using ethernet. + *

Must hold + * {@code }

+ * + * @return {@code true}: yes
{@code false}: no + */ + @RequiresPermission(ACCESS_NETWORK_STATE) + public static boolean isEthernet() { + final ConnectivityManager connectivityManager = (ConnectivityManager) Utils.getApp().getSystemService(Context.CONNECTIVITY_SERVICE); + final NetworkInfo ethernet = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_ETHERNET); + if (ethernet != null) { + NetworkInfo.State state = ethernet.getState(); + if (null != state) { + if (state == NetworkInfo.State.CONNECTED || state == NetworkInfo.State.CONNECTING) { + return true; + } + } + } + return false; + } + @RequiresPermission(ACCESS_NETWORK_STATE) private static NetworkInfo getActiveNetworkInfo() { ConnectivityManager cm =