android network develop(2)----network status check

Check & Get network status

Normally, there will be two type with phone network: wifi & mobile(gprs,3g,4fg)

So, we have can test connect and get the connect type.

1.check connect:

    public static boolean isOnline(Context context)
    {
        ConnectivityManager connMgr = (ConnectivityManager) 
                context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
        return (networkInfo != null && networkInfo.isConnected());
    }

2.get connect type:

    public static NetWorkStatus traceConnectStatus(Context context) {
        
        NetWorkStatus mStatus = NetWorkStatus.INVALID;
        ConnectivityManager connMgr = (ConnectivityManager) context
                .getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo networkInfo = connMgr
                .getNetworkInfo(ConnectivityManager.TYPE_WIFI);
        boolean isWifiConn = networkInfo.isConnected();
        networkInfo = connMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
        boolean isMobileConn = networkInfo.isConnected();
        
        if (isMobileConn) {
            if (isWifiConn) {
                mStatus = NetWorkStatus.BOTH;
            } else {
                mStatus = NetWorkStatus.GPRS;
            }
        } else {
            if (isWifiConn) {
                mStatus = NetWorkStatus.WIFI;
            } else {
                mStatus = NetWorkStatus.INVALID;
            }
        }
        return mStatus;
    }

3.connect status changed:

there is an intent we can listener. "android.net.conn.CONNECTIVITY_CHANGE"

package com.joyfulmath.androidstudy.connect;

import java.lang.ref.WeakReference;

import com.joyfulmath.androidstudy.TraceLog;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;

public class NetWorkUtils {
    
    public static final String CONNECTIVITY_CHANGE_ACTION = "android.net.conn.CONNECTIVITY_CHANGE";
    public enum NetWorkStatus{
        INVALID,GPRS,WIFI,BOTH
    }
    private WeakReference<Context> mWeakContext = null;
    private ConnectReceiver mConReceiver = null;
//    private NetWorkStatus mNetWorkStatus = NetWorkStatus.INVALID;
    
    public static NetWorkStatus traceConnectStatus(Context context) {
        
        NetWorkStatus mStatus = NetWorkStatus.INVALID;
        ConnectivityManager connMgr = (ConnectivityManager) context
                .getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo networkInfo = connMgr
                .getNetworkInfo(ConnectivityManager.TYPE_WIFI);
        boolean isWifiConn = networkInfo.isConnected();
        networkInfo = connMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
        boolean isMobileConn = networkInfo.isConnected();
        
        if (isMobileConn) {
            if (isWifiConn) {
                mStatus = NetWorkStatus.BOTH;
            } else {
                mStatus = NetWorkStatus.GPRS;
            }
        } else {
            if (isWifiConn) {
                mStatus = NetWorkStatus.WIFI;
            } else {
                mStatus = NetWorkStatus.INVALID;
            }
        }
        return mStatus;
    }
    
    public static boolean isOnline(Context context)
    {
        ConnectivityManager connMgr = (ConnectivityManager) 
                context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
        return (networkInfo != null && networkInfo.isConnected());
    }
    
    
    public NetWorkUtils(Context context)
    {
        mWeakContext = new WeakReference<Context>(context);
    }
    

    public void registerConnectReceiver() {
        if (mWeakContext.get() != null) {
            
            if (mConReceiver == null) {
                mConReceiver = new ConnectReceiver();
            }
            IntentFilter filter = new IntentFilter();
            filter.addAction(CONNECTIVITY_CHANGE_ACTION);
            filter.setPriority(1000);
            mWeakContext.get().registerReceiver(mConReceiver, filter);
        }

    }
    
    public void unRegisterConnectReceiver()
    {
        if(mWeakContext.get()!=null && mConReceiver!=null)
        {
            mWeakContext.get().unregisterReceiver(mConReceiver);
            mConReceiver = null;
        }

    }
    
    private void connectChanged()
    {
        if(mWeakContext.get()!=null)
        {
            NetWorkStatus status = traceConnectStatus(mWeakContext.get());
            TraceLog.i("status:"+status);
        }
    }
    
    public class ConnectReceiver extends BroadcastReceiver{

        @Override
        public void onReceive(Context context, Intent intent) {
            String action = intent.getAction();
            if(action!=null && action.equals(CONNECTIVITY_CHANGE_ACTION))
            {
                connectChanged();
            }
        }
        
    }

}

 

posted on 2015-07-15 10:25  Joyfulmath  阅读(524)  评论(0编辑  收藏  举报

导航