2013.11.28 ——— android 网络3g wifi切换

BroadcastReceiver
package com.example.testunicom;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.content.IntentFilter;import android.net.ConnectivityManager;import android.net.NetworkInfo;import android.net.wifi.WifiManager;public class NetCheckReceiver{    BaseBroadcast mReceiver;    Context mContext;    NetChangeFilter mFilter;        NetCheckReceiver(Context context){        this.mFilter = new NetChangeFilter(context);    }    public void register(Context context){        mReceiver = new BaseBroadcast();        IntentFilter filter = new IntentFilter();        filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);        mContext = context;        mContext.registerReceiver(mReceiver, filter);    }    public void unRegister(){        mContext.unregisterReceiver(mReceiver);    }        private class BaseBroadcast extends BroadcastReceiver {        @Override        public void onReceive(Context context, Intent intent) {            String action = intent.getAction();            if (action.equals(ConnectivityManager.CONNECTIVITY_ACTION)) {// 网络连接                System.out.println("======================================");                mFilter.netChange(context);            }        }    }}


NetChangeFilter
package com.example.testunicom;import android.content.Context;import android.net.ConnectivityManager;import android.net.NetworkInfo;public class NetChangeFilter {    private NetworkInfo mOldNet;        NetChangeFilter(Context context){        this.mOldNet = UtilUnicom.getNetWorkInfo(context);    }            public void netChange(Context context){        NetworkInfo tNet = UtilUnicom.getNetWorkInfo(context);                if(mOldNet==null){            if(tNet==null){                System.out.println("null ————> null");                return;            }            if(tNet.getType()==ConnectivityManager.TYPE_MOBILE){                System.out.println("null ————> mobile");            }else if(tNet.getType() == ConnectivityManager.TYPE_WIFI){                System.out.println("null ————> wifi");            }else{                System.out.println("null ————> " + tNet.getTypeName());            }        }else {            if(tNet==null){                if(mOldNet.getType()==ConnectivityManager.TYPE_MOBILE){                    System.out.println("mobile ————> null");                }else if(mOldNet.getType() == ConnectivityManager.TYPE_WIFI){                    System.out.println("wifi ————> null");                }else{                    System.out.println(mOldNet.getTypeName() + " ————> null");                }            }else{                int tOld = mOldNet.getType();                int tNew = tNet.getType();                                if(tOld!=tNew){                    if(tOld==ConnectivityManager.TYPE_MOBILE && tNew==ConnectivityManager.TYPE_WIFI){                        System.out.println("mobile ————> wifi");                    }else if(tOld==ConnectivityManager.TYPE_WIFI && tNew==ConnectivityManager.TYPE_MOBILE){                        System.out.println("wifi ————> mobile");                    }else{                        System.out.println(tOld + " ————> " + tNew);                    }                }else{                    System.out.println("same===============" + mOldNet.getTypeName());                }            }        }        mOldNet = tNet;    }    }



MainActivity
@Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        mContext = this;        mNetReceiver = new NetCheckReceiver(mContext);        mNetReceiver.register(mContext);    }@Override    protected void onDestroy() {        super.onDestroy();        mNetReceiver.unRegister();    }




测试如下:
1、wifi 3G都连着 断掉wifi

启动程序
11-28 10:56:41.823: I/System.out(819): ======================================
11-28 10:56:41.823: I/System.out(819): same===============WIFI
断掉wifi
11-28 10:57:28.819: I/System.out(819): ======================================
11-28 10:57:28.819: I/System.out(819): wifi ————> null
11-28 10:57:34.354: I/System.out(819): ======================================
11-28 10:57:34.354: I/System.out(819): null ————> mobile

2、3G连着,打开wifi
启动程序
11-28 10:58:03.543: I/System.out(819): ======================================
11-28 10:58:03.553: I/System.out(819): same===============mobile
打开wifi
11-28 10:58:25.624: I/System.out(819): ======================================
11-28 10:58:25.624: I/System.out(819): mobile ————> wifi
11-28 10:58:26.775: I/System.out(819): ======================================
11-28 10:58:26.775: I/System.out(819): same===============WIFI
11-28 10:58:26.785: I/System.out(819): ======================================
11-28 10:58:26.785: I/System.out(819): same===============WIFI

3、wifi连着,断开wifi 打开3G
11-28 10:59:51.448: I/System.out(819): ======================================
11-28 10:59:51.448: I/System.out(819): same===============WIFI
断开wifi 同时打开3G
11-28 11:00:20.536: I/System.out(819): ======================================
11-28 11:00:20.536: I/System.out(819): wifi ————> null
11-28 11:00:26.022: I/System.out(819): ======================================
11-28 11:00:26.022: I/System.out(819): null ————> mobile

3、3G连着,断开3G 打开wifi
启动程序
11-28 11:01:32.797: I/System.out(819): ======================================
11-28 11:01:32.797: I/System.out(819): same===============mobile
断开3G 打开wifi
11-28 11:01:49.463: I/System.out(819): ======================================
11-28 11:01:49.473: I/System.out(819): mobile ————> null
11-28 11:01:57.871: I/System.out(819): ======================================
11-28 11:01:57.871: I/System.out(819): null ————> wifi


由上可见:
wifi——>3G 接收到2个广播
1、wifi ————> null 断开wifi
2、null ————> mobile 连接3G
3G——>Wifi 接收到了3个广播
1、mobile ————> wifi 连接到wifi
2、same===============WIFI 断开3G
3、same===============WIFI 连接wifi

更多相关文章

  1. android 判断网络连接状态
  2. android应用程序设置全屏
  3. android 蓝牙打印程序源代码
  4. android 获取应用程序占用的内存大小
  5. Android应用程序窗口(Activity)的运行上下文环境(Context)的创建过程
  6. android学习笔记(2)---第一个Android应用程序的创建、修改、打包、
  7. android 去掉应用程序自带的黑色的头部横条

随机推荐

  1. Structure of a Google Docs document 谷
  2. Web应用优化 - 优化切页模式
  3. S3存储桶数据加密设定
  4. 执行 brew install 命令长时间卡在 Updat
  5. Web 应用优化 - 按需加载资源
  6. GitHub 个人首页如何定制
  7. ITSS运维资质认证评审需要哪些材料?
  8. jQuery方法使用
  9. 0413作业-jQuery常用方法
  10. i5 9400和9400f区别 i5 9400和9400哪个好