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

编程入门 行业动态 更新时间:2024-10-28 10:27:00

Android 数据流量(3G,4G)与wifi 转换<a href=https://www.elefans.com/category/jswz/34/1771422.html style=实时监听"/>

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

第一次登录状态改变
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()) + "断开");
                }}}}
}

作者水平有限   不喜勿喷 

更多推荐

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

本文发布于:2024-02-25 20:53:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1700260.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:实时   流量   数据   Android   wifi

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!