zoukankan      html  css  js  c++  java
  • 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();
                }
            }
            
        }
    
    }
  • 相关阅读:
    vue + ElementUI 的横向表格代码
    localStorage.getItem
    字符串分割与数组的分割 split()VSsplice()&slice()
    ES6 Class 的基本语法
    e6 6 Symbol
    ES6 Iterator 和 for...of 循环
    ES6 数组的扩展
    element-ui上传一张图片后隐藏上传按钮
    图片上传预览原理及实现
    Winform的一些控件说明
  • 原文地址:https://www.cnblogs.com/deman/p/4647590.html
Copyright © 2011-2022 走看看