Android 数据流量(3G,4G)与wifi 转换实时监听

来源:互联网 发布:淘宝药品需求清单 编辑:程序博客网 时间:2024/05/02 01:42

第一次登录状态改变
3G改成wifi状态变化
IntentFilter filter = new IntentFilter();//代码中注册
filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);filter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);registerReceiver(new NetworkConnectChangedReceiver(), filter);


public class NetworkConnectChangedReceiver extends BroadcastReceiver {    private String getConnectionType(int type) {        String connType = "";        if (type == ConnectivityManager.TYPE_MOBILE) {            connType = "3G网络数据";        } else if (type == ConnectivityManager.TYPE_WIFI) {            connType = "WIFI网络";        }        return connType;    }    @Override    public void onReceive(Context context, Intent intent) {        if (WifiManager.WIFI_STATE_CHANGED_ACTION.equals(intent.getAction())) {// 监听wifi的打开与关闭,与wifi的连接无关            int wifiState = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, 0);            Log.e("TAG", "wifiState:" + wifiState);            switch (wifiState) {                case WifiManager.WIFI_STATE_DISABLED:                    break;                case WifiManager.WIFI_STATE_DISABLING:                    break;            }        }        // 监听wifi的连接状态即是否连上了一个有效无线路由        if (WifiManager.NETWORK_STATE_CHANGED_ACTION.equals(intent.getAction())) {            Parcelable parcelableExtra = intent                    .getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);            if (null != parcelableExtra) {                // 获取联网状态的NetWorkInfo对象                NetworkInfo networkInfo = (NetworkInfo) parcelableExtra;                //获取的State对象则代表着连接成功与否等状态                NetworkInfo.State state = networkInfo.getState();                //判断网络是否已经连接                boolean isConnected = state == NetworkInfo.State.CONNECTED;                Log.e("TAG", "isConnected:" + isConnected);                if (isConnected) {                } else {                }            }        }        // 监听网络连接,包括wifi和移动数据的打开和关闭,以及连接上可用的连接都会接到监听        if (ConnectivityManager.CONNECTIVITY_ACTION.equals(intent.getAction())) {            //获取联网状态的NetworkInfo对象            NetworkInfo info = intent                    .getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO);            if (info != null) {                //如果当前的网络连接成功并且网络连接可用                if (NetworkInfo.State.CONNECTED == info.getState() && info.isAvailable()) {                    if (info.getType() == ConnectivityManager.TYPE_WIFI){                                               Log.e("TAG", getConnectionType(info.getType()) + "连上(wifi)"+host[0][0]);                    }else if (info.getType() == ConnectivityManager.TYPE_MOBILE){                                                Log.e("TAG", getConnectionType(info.getType()) + "连上(3g)"+host[0][0]);                    }                } else {                    Log.e("TAG", getConnectionType(info.getType()) + "断开");                }            }        }    }}

作者水平有限   不喜勿喷 

0 0