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();

            }

        }

        

    }



}

 

你可能感兴趣的:(android)