Androidでアプリがネットワークに接続されているかどうかを判断

3515 ワード

1.MyApplication extends Applicationに次のコードを追加します.
//      
    public boolean isConnectInternet() {

        ConnectivityManager conManager=(ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE );

        NetworkInfo networkInfo = conManager.getActiveNetworkInfo();

        if (networkInfo != null ){ //   ,         ,      

            return networkInfo.isAvailable();

        }
        return false ;
    }
//  WIFI      
public boolean isWifiConnected(Context context) {  
     if (context != null) {  
         ConnectivityManager mConnectivityManager = (ConnectivityManager) context  
                 .getSystemService(Context.CONNECTIVITY_SERVICE);  
         NetworkInfo mWiFiNetworkInfo = mConnectivityManager  
                 .getNetworkInfo(ConnectivityManager.TYPE_WIFI);  
         if (mWiFiNetworkInfo != null) {  
             return mWiFiNetworkInfo.isAvailable();  
         }  
     }  
     return false;  
 }
 
   
  

//

public boolean isMobileConnected(Context context) {  
     if (context != null) {  
         ConnectivityManager mConnectivityManager = (ConnectivityManager) context  
                 .getSystemService(Context.CONNECTIVITY_SERVICE);  
         NetworkInfo mMobileNetworkInfo = mConnectivityManager  
                 .getNetworkInfo(ConnectivityManager.TYPE_MOBILE);  
         if (mMobileNetworkInfo != null) {  
             return mMobileNetworkInfo.isAvailable();  
         }  
     }  
     return false;  
 }
// のネットワーク タイプ の
public static int getConnectedType(Context context) {  
     if (context != null) {  
         ConnectivityManager mConnectivityManager = (ConnectivityManager) context  
                 .getSystemService(Context.CONNECTIVITY_SERVICE);  
         NetworkInfo mNetworkInfo = mConnectivityManager.getActiveNetworkInfo();  
         if (mNetworkInfo != null && mNetworkInfo.isAvailable()) {  
             return mNetworkInfo.getType();  
         }  
     }  
     return -1;  
 }
2.インベントリ・ファイルに の を します.

Androidアプリケーションを する には、ネットワークへのアクセスに しては、ネットワークの をチェックする があります. にはConnectivityManagerで を することができます.
ConnectivityManagerには、 の4つの なタスクがあります.
1、 のネットワーク (GPRS、WIFI、UMTSなどを む)を する
2、 の が わった 、 を る
3、 つのネットワーク に した 、フェイルオーバーを う
ネットワーク を して するだけであれば、 するActivityで び すことができる
Boolean isConnectioned=MyApplication.getInstance.isConnectInternet();
ネットワーク を う.
プログラムでネットワークの をリスニングするには、 の に います.
WIFIとGPRSが されているかどうかに じて の を するなど、 な を するReceiverリロードonReceive を します.
connectionReceiver = new BroadcastReceiver() {
   
   @Override
   public void onReceive(Context context, Intent intent) {
    ConnectivityManager connectMgr = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
    NetworkInfo mobNetInfo = connectMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
    NetworkInfo wifiNetInfo = connectMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);

    if (!mobNetInfo.isConnected() && !wifiNetInfo.isConnected()) {
     Log.i(TAG, "unconnect");
     // unconnect network
     }else {

    // connect network
     }
   }
  };
connectionReceiverの を な で う