隨筆雜記

             :: 首頁 :: 新隨筆 ::  ::  :: 管理 ::

          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);  
                  }  
              }   
          }  
                 }  
          posted on 2012-09-17 11:56 天宇恒星 閱讀(21897) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 宝鸡市| 泰顺县| 木兰县| 虎林市| 孝昌县| 屯门区| 天祝| 东平县| 淳安县| 萨嘎县| 福州市| 荔浦县| 丹江口市| 防城港市| 巴东县| 四川省| 大埔县| 枣强县| 古蔺县| 勐海县| 定西市| 元江| 澎湖县| 宁陕县| 古蔺县| 巴彦淖尔市| 高淳县| 祁连县| 鸡西市| 年辖:市辖区| 博兴县| 敦煌市| 永城市| 古浪县| 诏安县| 松溪县| 柘城县| 兴安县| 邻水| 会同县| 方正县|