Android网络类型判断(2g、3g、wifi)

判断网络类型是wifi,还是3G,还是2G网络,对不同

的网络进行不同的处理,现将判断方法整理给大家,以供参考

说明:下面用到的数据移动2G,联通2G,联通3G,wifi我都已经测试过,暂时手上

没有电信的卡,所以没有验证,有电信手机的同事,可以验证一下,验证后将结果

发送给大家。

ConnectivityManager connectMgr = (ConnectivityManager) this

.getSystemService(Context.CONNECTIVITY_SERVICE);

NetworkInfo info = connectMgr.getActiveNetworkInfo();

一、判断网络是否是wifi,在判断之前一定要进行的非空判断,如果没有任何网络

连接info ==null

info.getType() == ConnectivityManager.TYPE_WIFI

二、判断是否是手机网络

info !=null && info.getType() ==  ConnectivityManager.TYPE_MOBILE

手机网络进行详细区分:

info.getSubtype() 这里使用 getSubtype(),不是 getType(),getType()返回的

是0,或者1,是区分是手机网络还是wifi

info.getSubtype()取值列表如下:

* NETWORK_TYPE_CDMA 网络类型为CDMA

* NETWORK_TYPE_EDGE 网络类型为EDGE

* NETWORK_TYPE_EVDO_0 网络类型为EVDO0

* NETWORK_TYPE_EVDO_A 网络类型为EVDOA

* NETWORK_TYPE_GPRS 网络类型为GPRS

* NETWORK_TYPE_HSDPA 网络类型为HSDPA

* NETWORK_TYPE_HSPA 网络类型为HSPA

* NETWORK_TYPE_HSUPA 网络类型为HSUPA

* NETWORK_TYPE_UMTS 网络类型为UMTS

联通的3G为UMTS或HSDPA,移动和联通的2G为GPRS或EDGE,电信的2G为CDMA,电信

的3G为EVDO

android获取手机的ip地址

private String getPhoneIp() {        try {  
            for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {  
                NetworkInterface intf = en.nextElement();  
                for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) {  
                    InetAddress inetAddress = enumIpAddr.nextElement();  
                    if (!inetAddress.isLoopbackAddress() && inetAddress instanceof Inet4Address) {  
                    //if (!inetAddress.isLoopbackAddress() && inetAddress instanceof Inet6Address) {  
                        return inetAddress.getHostAddress().toString();  
                    }  
                }  
            }  
        } catch (Exception e) {  
        }  
        return ""; 
    }
时间: 2024-08-07 04:34:00

Android网络类型判断(2g、3g、wifi)的相关文章

iOS中利用CoreTelephony获取用户当前网络状态(判断2G,3G,4G)

前言: 在项目开发当中,往往需要利用网络.而用户的网络环境也需要我们开发者去注意,根据不同的网络状态作相应的优化,以提升用户体验. 但通常我们只会判断用户是在WIFI还是移动数据,而实际上,移动数据也分为2G/3G/4G等不同制式.而不同的网络制式又对用户体验产生 较为明显的影响(对于依赖网络的项目而言).因此很有必要对不同的网络制式作相应的优化. 而在iOS当中,无论是苹果官方提供的Reachability类还是较为常用的第三方网络类AFNetworking,它们提供的网络环境判断也仅限 于W

利用CoreTelephony获取用户当前网络状态(判断2G,3G,4G)

前言: 在项目开发当中,往往需要利用网络.而用户的网络环境也需要我们开发者去注意,根据不同的网络状态作相应的优化,以提升用户体验. 但通常我们只会判断用户是在WIFI还是移动数据,而实际上,移动数据也分为2G/3G/4G等不同制式.而不同的网络制式又对用户体验产生 较为明显的影响(对于依赖网络的项目而言).因此很有必要对不同的网络制式作相应的优化. 而在iOS当中,无论是苹果官方提供的Reachability类还是较为常用的第三方网络类AFNetworking,它们提供的网络环境判断也仅限 于W

android 获取网络类型名称2G 3G 4G wifi

首先工程Manifest文件要引用: 1 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 2 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> //获取网络服务 1 public static String getNetworkTypeName(Co

Windows Phone 获取网络类型(GSM/CDMA/WIFI/Ethernet)

一.判断是否有网络数据连接: 最基本的网络状态判断,如果没有网络连接,一切操作都进行不下去啦. Microsoft.Phone.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable() 二.判断网络类型(GSM/CDMA/WIFI/Ethernet): 在一般的应用程序中,需要知道的网络状态也就三种:无网络.WIFI/Ethernet.手机网络. 三者的区别就是: 1."无网络":不解释,大家都懂的. 2."

Android 网络连接判断与处理

Android网络连接判断与处理 获取网络信息需要在AndroidManifest.xml文件中加入相应的权限. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 1)判断是否有网络连接 复制代码 1 public boolean isNetworkConnected(Context context) { 2     if (context != null) { 3    

Android网络连接判断与处理

获取网络信息需要在AndroidManifest.xml文件中加入相应的权限. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 1)判断是否有网络连接 1 public boolean isNetworkConnected(Context context) { 2 if (context != null) { 3 ConnectivityManager mConnectiv

Android 网络连接判断并进行相关处理

获取网络信息需要在AndroidManifest.xml文件中加入相应的权限. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 1)判断是否有网络连接,没有则进入网络设置 /** * 检测网络是否连接 * @return */ private boolean checkNetworkState() { boolean flag = false; //得到网络连接信息 man

android如何判断当前网络类型(联网,2g,3g,wifi等)

一般对网络的判断都是判断是否联网,不过有时候我们需要知道具体的网络类型,比如在3g网络下,百度地图的定位功能存在很大的偏差,这就需要提前判断网络类型针对3g网络情况做特殊的处理. 关于Android如何检测网络的类型,网上代码很多,但是有用的不多,真正解决了问题的我只找到一篇(见文章末尾网址),为了更好的方便自己理解,对这片文章做了解释和整理. 在android中判断网络需要用到ConnectivityManager,下面的方法演示了如何用ConnectivityManager判断当前是否联网:

Android Network -------------------判断网络状态(网络的连接,改变,和判断2G/3G/4G)

现在app大多都需要从网络上获得数据.所以访问网络是在所难免.但是再访问网络之前,我们应该先做一下网络的状态判断.其实在访问网络之前我们要做一些状态判断,对应一些状态判断来做处理,并不是直接使用Http访问网络即可.很多人在开发就经常把网络这块直接跳过,直接访问网络,可以一断网,各种体验效果不好,不是说app没法用,只是体验效果差.还有,就是我们可能为用户考虑,因为现在一般连网是wifi和手机流量,都知道后者收费是比较高的.假如我们的app加载的图片或者有大的数据下载操作,可是用户的本意是要是在