判断网络连接的是什么网络

来源:互联网 发布:死神面具淘宝 编辑:程序博客网 时间:2024/04/30 07:24

首先写一个NetWorkUtils

package com.bw.utils;import android.content.Context;import android.net.ConnectivityManager;import android.net.NetworkInfo;import android.telephony.TelephonyManager;public class NetWorkUtils {    public static final int G3 = 3;// 3G    public static final int G2 = 2;// 2G    public static final int G4 = 4;// 4G    public static final int WIFI = 5;// WIFI    public static final int NO = 0;// 琛ㄧず娌℃湁缃戠粶杩炴帴    public static int GetNetworkType(Context context) {        int strNetworkType = NO;        NetworkInfo networkInfo = ((ConnectivityManager) context                .getSystemService(Context.CONNECTIVITY_SERVICE))                .getActiveNetworkInfo();        if (networkInfo != null && networkInfo.isConnected()) {            if (networkInfo.getType() == ConnectivityManager.TYPE_WIFI) {                strNetworkType = WIFI;            } else if (networkInfo.getType() == ConnectivityManager.TYPE_MOBILE) {                String _strSubTypeName = networkInfo.getSubtypeName();                // Log.e("cocos2d-x", "Network getSubtypeName : " +                // _strSubTypeName);                // TD-SCDMA networkType is 17                int networkType = networkInfo.getSubtype();                switch (networkType) {                case TelephonyManager.NETWORK_TYPE_GPRS:                case TelephonyManager.NETWORK_TYPE_EDGE:                case TelephonyManager.NETWORK_TYPE_CDMA:                case TelephonyManager.NETWORK_TYPE_1xRTT:                case TelephonyManager.NETWORK_TYPE_IDEN: // api<8 : replace by                                                            // 11                    strNetworkType = G2;                    break;                case TelephonyManager.NETWORK_TYPE_UMTS:                case TelephonyManager.NETWORK_TYPE_EVDO_0:                case TelephonyManager.NETWORK_TYPE_EVDO_A:                case TelephonyManager.NETWORK_TYPE_HSDPA:                case TelephonyManager.NETWORK_TYPE_HSUPA:                case TelephonyManager.NETWORK_TYPE_HSPA:                case TelephonyManager.NETWORK_TYPE_EVDO_B: // api<9 : replace by                                                            // 14                case TelephonyManager.NETWORK_TYPE_EHRPD: // api<11 : replace by                                                            // 12                case TelephonyManager.NETWORK_TYPE_HSPAP: // api<13 : replace by                                                            // 15                    strNetworkType = G3;                    break;                case TelephonyManager.NETWORK_TYPE_LTE: // api<11 : replace by                                                        // 13                    strNetworkType = G4;                    break;                default:                    if (_strSubTypeName.equalsIgnoreCase("TD-SCDMA")                            || _strSubTypeName.equalsIgnoreCase("WCDMA")                            || _strSubTypeName.equalsIgnoreCase("CDMA2000")) {                        strNetworkType = G3;                    } else {                        strNetworkType = NO;                    }                    break;                }            }        }        return strNetworkType;    }}

然后在MainActivity

package com.bw.yangzhengzheng20160517;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.text.format.DateUtils;import android.widget.Toast;import com.bw.utils.NetWorkUtils;public class MainActivity extends Activity {    private int flag=0;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        startThread();    }    /**     * @先判断网络连接的类型 然后在做请求处理     * */    public void startThread() {        // 获得网络状态的值        int type = NetWorkUtils.GetNetworkType(MainActivity.this);        if (type == NetWorkUtils.WIFI) {// 判断是否是WIFI连接 Toast提示            if (flag == 0) {                // 因为推荐是作为首页出现的 Toast提示只作为第一次进入时才显示 所以加了一个flag标记                Toast.makeText(MainActivity.this, "您当前使用的是WIFI数据连接.....", -10)                        .show();                flag++;// 让标记++            }            requestData();// 线程重新请求数据        }        else if (type == NetWorkUtils.G2 || type == NetWorkUtils.G3                || type == NetWorkUtils.G4) {            //isFirst("移动");            if (flag == 0) {                // 因为推荐是作为首页出现的 Toast提示只作为第一次进入时才显示 所以加了一个flag标记                Toast.makeText(MainActivity.this, "您当前使用的是移动数据连接.....", -10).show();                flag++;// 让标记++            }            requestData();// 线程重新请求数据        }        else if (type == NetWorkUtils.NO) {                Toast.makeText(MainActivity.this, "网络未连接,请检查网络状态......", -10)                        .show();        }    }}

最后在 清单文件里加权限

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
0 0
原创粉丝点击