如何确定Android中Wifi,3G,4G(LTE)和VPN的网络接口?

如何确定Android中Wifi,3G,4G(LTE)和VPN的网络接口?,第1张

概述在android中,我发现了网络接口名称&通过以下代码与该接口关联的IP地址.//Iterateoverallnetworkinterfaces.for(Enumeration<NetworkInterface>en=NetworkInterface.getNetworkInterfaces();en.hasMoreElements();){NetworkInterfaceintf=en.ne

在android中,我发现了网络接口名称&通过以下代码与该接口关联的IP地址.

// Iterate over all network interfaces.for (Enumeration<NetworkInterface> en =     NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();)    {        NetworkInterface intf = en.nextElement();        // Iterate over all IP addresses in each network interface.        for (Enumeration<InetAddress> enumIPAddr =             intf.getInetAddresses(); enumIPAddr.hasMoreElements();)        {            InetAddress iNetAddress = enumIPAddr.nextElement();            // Loop back address (127.0.0.1) doesn't count as an in-use IP address.            if (!iNetAddress.isLoopbackAddress())            {                sLocaliP = iNetAddress.getHostAddress().toString();                sInterfacename = intf.getname();            }        }    }

由于网络接口名称可能因制造商而异,并且在同一制造商的不同设备中也可能有所不同.

如何确定哪个网络接口适用于wifi,3G,4G(LTE)& AndroID中的VPN?

解决方法:

使用这种方法,您可以确定它是Wifi还是移动连接:

private static boolean isConnecteDWifi(Context context) {        NetworkInfo info = ConnectionUtil.getNetworkInfo(context);        return (info != null && info.isConnected() && info.getType() == ConnectivityManager.TYPE_WIFI);    }private static boolean isConnectedMobile(Context context) {        NetworkInfo info = ConnectionUtil.getNetworkInfo(context);        return (info != null && info.isConnected() && info.getType() == ConnectivityManager.TYPE_MOBILE);}

如果是移动连接,则可以通过info.getSubType()了解更多信息.使用这样的方法:

 private static String getConnectionType(int type, int subType) {        if (type == ConnectivityManager.TYPE_WIFI) {            return "TYPE_WIFI";        } else if (type == ConnectivityManager.TYPE_MOBILE) {            switch (subType) {                case TelephonyManager.NETWORK_TYPE_UNKNowN:                    return "TYPE_UNKNowN";                case TelephonyManager.NETWORK_TYPE_1xRTT:                    return "TYPE_1XRTT"; // ~ 50-100 kbps                case TelephonyManager.NETWORK_TYPE_CDMA:                    return "TYPE_CDMA"; // ~ 14-64 kbps                case TelephonyManager.NETWORK_TYPE_EDGE:                    return "TYPE_EDGE"; // ~ 50-100 kbps                case TelephonyManager.NETWORK_TYPE_EVDO_0:                    return "TYPE_EVDO_0"; // ~ 400-1000 kbps                case TelephonyManager.NETWORK_TYPE_EVDO_A:                    return "TYPE_EVDO_A"; // ~ 600-1400 kbps                case TelephonyManager.NETWORK_TYPE_GPRS:                    return "TYPE_GPRS"; // ~ 100 kbps                case TelephonyManager.NETWORK_TYPE_HSDPA:                    return "TYPE_HSDPA"; // ~ 2-14 Mbps                case TelephonyManager.NETWORK_TYPE_HSPA:                    return "TYPE_HSPA"; // ~ 700-1700 kbps                case TelephonyManager.NETWORK_TYPE_HSUPA:                    return "TYPE_HSUPA"; // ~ 1-23 Mbps                case TelephonyManager.NETWORK_TYPE_umts:                    return "TYPE_umts"; // ~ 400-7000 kbps                case TelephonyManager.NETWORK_TYPE_IDEN: // API level 8                    return "TYPE_IDEN"; // ~25 kbps                // UnkNown                default:                    return "TYPE_UNKNowN";            }        } else {            return "TYPE UNKNowN";        }    }

希望它能对您有所帮助:)

总结

以上是内存溢出为你收集整理的如何确定Android中Wifi,3G,4G(LTE)和VPN的网络接口?全部内容,希望文章能够帮你解决如何确定Android中Wifi,3G,4G(LTE)和VPN的网络接口?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1088417.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存