博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android wifi状态三种广播
阅读量:6161 次
发布时间:2019-06-21

本文共 2954 字,大约阅读时间需要 9 分钟。

  hot3.png

public class NetworkConnectChangedReceiver extends BroadcastReceiver{  

    @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);   
            LogTag.showTAG_e("WIFI状态", "wifiState"+wifiState);  
            switch (wifiState) {   
            case WifiManager.WIFI_STATE_DISABLED:   
                break;   
            case WifiManager.WIFI_STATE_DISABLING:   
                break;   
           //  
            }   
        }  
    // 这个监听wifi的连接状态即是否连上了一个有效无线路由,当上边广播的状态是WifiManager.WIFI_STATE_DISABLING,和WIFI_STATE_DISABLED的时候,根本不会接到这个广播。  
    
// 在上边广播接到广播是WifiManager.WIFI_STATE_ENABLED状态的同时也会接到这个广播,当然刚打开wifi肯定还没有连接到有效的无线  
    if (WifiManager.NETWORK_STATE_CHANGED_ACTION.equals(intent.getAction())) {  
            Parcelable parcelableExtra = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);    
            if (null != parcelableExtra) {    
                NetworkInfo networkInfo = (NetworkInfo) parcelableExtra;    
                State state = networkInfo.getState();  
                boolean isConnected = state==State.CONNECTED;//当然,这边可以更精确的确定状态  
                LogTag.showTAG_e(this.getClass().getSimpleName(), "isConnected"+isConnected);  
                if(isConnected){  
                }else{  
                      
                }  
            }    
        }  
    //这个监听网络连接的设置,包括wifi和移动数据的打开和关闭。.   
        
//最好用的还是这个监听。wifi如果打开,关闭,以及连接上可用的连接都会接到监听。见log  
        
// 这个广播的最大弊端是比上边两个广播的反应要慢,如果只是要监听wifi,我觉得还是用上边两个配合比较合适  
    if(ConnectivityManager.CONNECTIVITY_ACTION.equals(intent.getAction())){  
        NetworkInfo info = intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO);  
        if (info != null) {  
            LogTag.showTAG_e("CONNECTIVITY_ACTION", "info.getTypeName()"+info.getTypeName());  
            LogTag.showTAG_e("CONNECTIVITY_ACTION", "getSubtypeName()"+info.getSubtypeName());  
            LogTag.showTAG_e("CONNECTIVITY_ACTION", "getState()"+info.getState());  
            LogTag.showTAG_e("CONNECTIVITY_ACTION",  
                                "getDetailedState()"+info.getDetailedState().name());  
            LogTag.showTAG_e("CONNECTIVITY_ACTION", "getDetailedState()"+info.getExtraInfo());  
            LogTag.showTAG_e("CONNECTIVITY_ACTION", "getType()"+info.getType());  
        }   
    }  

if (WifiManager.NETWORK_STATE_CHANGED_ACTION.equals(intent.getAction())) {

// 这个监听wifi的连接状态  
           Parcelable parcelableExtra = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);    
           if (null != parcelableExtra) {    
               NetworkInfo networkInfo = (NetworkInfo) parcelableExtra;    
               State state = networkInfo.getState();  
               if(state==State.CONNECTED){  
                showWifiCconnected(context);  
               }  
               /**else if(state==State.DISCONNECTED){ 
                showWifiDisconnected(context); 
               }
*///昨天写的这个方法,在坐地铁的时候发现,如果地铁上有无效的wifi站点,手机会自动连接,但是连接失败后还是会接到广播,所以不能用了  
           }    
       }  
if(ConnectivityManager.CONNECTIVITY_ACTION.equals(intent.getAction())){
//这个监听网络连接的设置,包括wifi和移动数据 的打开和关闭  
NetworkInfo info = intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO);  
if (info != null) {  
    if(NetworkInfo.State.CONNECTED==info.getState()){  
        Intent pushIntent = new Intent();  
        pushIntent.setClass(context, NotificationService.class);  
    }else if(info.getType()==1){  
            if(NetworkInfo.State.DISCONNECTING==info.getState())  
                showWifiDisconnected(context);  
        }  
    }   
}  
       }  

转载于:https://my.oschina.net/u/1777508/blog/308847

你可能感兴趣的文章
Android OTA相关博文
查看>>
Lua中调用C/C++函数 (转)
查看>>
iOS 开发,该如何解决弹窗的设计问题?
查看>>
iOS中 Swift初级入门学习(一)
查看>>
4G网络建设近尾声 SDN/NFV是5G网络创新关键
查看>>
光纤非线性效应对光OFDM信号的影响研究
查看>>
自称世界上最权威监控软件FlexiSpy被黑删库,怎么做到的?
查看>>
Gartner 发布2017 年商业智能和分析平台魔力象限 Tableau 获“领先者”
查看>>
10人勾结苹果外包公司员工窃个人信息 涉案900万
查看>>
IJCAI最佳论文公布 华人斩获最佳学生论文奖!
查看>>
《云计算:原理与范式》一3.4 SaaS范式面临的挑战
查看>>
苹果用户每天解锁iPhone手机80次
查看>>
港媒:中国将斥资1800亿美元建全球最大5G网络
查看>>
大数据高地,这样炼成!
查看>>
GlobeRanger优化航空RFID套件,并收到FAA适用性信函
查看>>
QBlog V2.5 源码开放下载(ASP.NET 番外系列之开端)
查看>>
调查显示:数据中心行业女性获得报酬比男性多
查看>>
科沃斯机器人“入职”自助办税服务厅
查看>>
政府部门和金融行业已成网络攻击的最大目标
查看>>
未来五年的全球绿色数据中心市场的增长趋势和预测
查看>>