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 解决eclipse无法更新SDK问题
  3. Android判断网络状态是否断开+Android完全关闭应用程序+ 本文讲
  4. Android(安卓)- 引导用户打开位置服务
  5. 如何在Ubuntu下搭建Android(安卓)NDK开发环境
  6. Android(安卓)- 安装 windows 7 安装 Android(安卓)SDK 的时候出
  7. Android环境安装
  8. Android:Nothing to show in Android(安卓)Project
  9. Android(安卓)黑科技

随机推荐

  1. Android实现开机自启动Service
  2. android:启动界面设计
  3. Android 最简单的SD卡文件遍历程序
  4. android JNI java与C++传递String数组(引
  5. Android中实现滑动翻页—使用ViewFlipper
  6. Android之AlertDialog Demo(20190115)
  7. android将后台应用置顶及moveTaskToFront
  8. android 版本检测与自动更新
  9. android 悬浮球 (所有界面可用) 开发
  10. 2013.12.05(3)——— android ViewPagerInd