检测网络工具类

 public class NetWork {
     private final ConcurrentLinkedQueue <NetworkListener >mListeners =
                   ConcurrentLinkedQueue();
     private final Context mContext ;
     private int mNetChange ;
     private final NetworkReceiver mNetworkReceiver = newNetworkReceiver() ;
     private static final int DIS_CONNECT = - 1 ;
     private static final int UNKNOWN_NET_TYPE = - 2;
     public NetWork ( Context context ) {
         this. mContext = context ;
         this. mContext .enforceCallingOrSelfPermission (
                 "android.permission.ACCESS_NETWORK_STATE" ,
                 "Need permission: android.permission.ACCESS_NETWORK_STATE") ;
         this. mNetChange = getNetChange ();
     }
     private int getNetChange() {
         if ( ! isNetworkConnected()) {
             return - 1 ;
         }
         if ( isWifi ())
             return 1 ;
         if ( is3GNet ()) {
             return 0 ;
         }
         return - 2 ;
     }
         
     public boolean isNetworkConnected() {
         NetworkInfo ni = (( ConnectivityManager) this. mContext
                 . getSystemService( "connectivity" )). getActiveNetworkInfo ();
         if (( ni != null ) && ( ni .getState () == NetworkInfo .State . CONNECTED)) {
             return true ;
         }
         return false ;
     }
      //添加网络监听
         
    public void addNetworkListener (NetworkListener listener)   {
         synchronized ( this. mListeners ) {
             if ( listener == null) {
                 throw new IllegalArgumentException ();
             }
             if ( this. mListeners .size () == 0) {
                 IntentFilter filter = new IntentFilter ();
                filter . addAction( "android.net.conn.CONNECTIVITY_CHANGE" ) ;
                 this. mContext .registerReceiver ( this. mNetworkReceiver, filter );
             }
             if ( !this. mListeners .contains ( listener))
                 this. mListeners .add ( listener) ;
         }
     }
      //wifi 状态
    
 public boolean isWifi() {
         ConnectivityManager manager = ( ConnectivityManager)   this. mContext
                 . getSystemService( "connectivity" );
         NetworkInfo wifi = manager. getActiveNetworkInfo() ;
         return ( wifi != null ) && ( wifi .getType () == 1 ) ;
     }
      //移动网络状态
 
    public boolean is3GNet() {
         ConnectivityManager manager = ( ConnectivityManager)   this. mContext
                 . getSystemService( "connectivity" );
         NetworkInfo mobile = manager. getActiveNetworkInfo() ;
         return ( mobile != null ) && ( mobile. getType () == 0 ) ;
     }
     //移除网络监听
   
  public void removeNetworkListener ( NetworkListenerlistener ) {
         synchronized ( this. mListeners ) {
             if ( !this. mListeners .contains ( listener)) {
                 return;
             }
             this. mListeners .remove ( listener) ;
             if ( this. mListeners .size () == 0)
                 try {
                     this. mContext .unregisterReceiver ( this. mNetworkReceiver) ;
                 } catch (Exception localException) {
                 }
         }
     }
     //向外提供网络连接 和没有连接的接口
    
 public static abstract interface NetworkListener {
         public abstract void onNetworkConnected ();
         public abstract void onNetworkDisconnected () ;
     }
     //断网情况下发送广播
  
   private class NetworkReceiver extends BroadcastReceiver {
         private NetworkReceiver () {
         }
         public void onReceive( Context context , Intent intent ) {
             if ( NetWork .this. mNetChange != NetWork .this. getNetChange ()) {
                 NetWork .this. mNetChange = NetWork .this. getNetChange ();
                 synchronized ( NetWork. this. mListeners) {
                     for ( NetWork .NetworkListener listener :  NetWork .this. mListeners ) {
                        listener . onNetworkDisconnected() ;
                     }
                     if ( NetWork. this. isNetworkConnected())
                         for ( NetWork. NetworkListenerlistener : NetWork .this. mListeners )
                            listener . onNetworkConnected() ;
                 }
             }
         }
     }
}

你可能感兴趣的:(android)