Android:检查网络连接状态


(1)在AndroidManifest.xml文件中添加必要的权限。

访问网络我们需要 INTERNET 权限
检查网络状态我们需要 ACCESS_NETWORK_STATE 权限

  1.     <!-- Internet Permissions -->  
  2.     <uses-permission android:name="android.permission.INTERNET" />  
  3.   
  4.     <!-- Network State Permissions -->  
  5.     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

(2)创建工具类ConnectionDetector.java

  1. import android.content.Context;  
  2. import android.net.ConnectivityManager;  
  3. import android.net.NetworkInfo;  
  4.    
  5. public class ConnectionDetector {  
  6.    
  7.     private Context _context;  
  8.    
  9.     public ConnectionDetector(Context context){  
  10.         this._context = context;  
  11.     }  
  12.     /** 
  13.      * 判断网络是否连接 
  14.      * @return true/false 
  15.      */  
  16.     public boolean isConnectingToInternet(){  
  17.         ConnectivityManager connectivity = (ConnectivityManager) _context.getSystemService(Context.CONNECTIVITY_SERVICE);  
  18.         if (connectivity != null)  
  19.           {  
  20.             NetworkInfo[] info = connectivity.getAllNetworkInfo();  
  21.             if (info != null) {  
  22.                 for (int i = 0; i < info.length; i++) {  
  23.                     if (info[i].getState() == NetworkInfo.State.CONNECTED) {  
  24.                         return true;  
  25.                     }  
  26.                 }  
  27.             }  
  28.         }  
  29.         return false;  
  30.     }  
  31. }

(3)上面工具类的使用:当需要在你的应用中检查网络状态时调用isConnectingToInternet()函数,返回true或false。

  1.   ConnectionDetector cd = new ConnectionDetector(getApplicationContext());  
  2.     Boolean isInternetPresent = cd.isConnectingToInternet(); // true or false

(4)下面是一个小测试,实现单击按钮,弹出alert dialog显示网络连接状态。

在res/layout/main.xml中创建一个按钮

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:layout_width="fill_parent"  
  4.     android:layout_height="fill_parent"  
  5.     android:orientation="vertical" >  
  6.    
  7.     <TextView  
  8.         android:layout_width="fill_parent"  
  9.         android:layout_height="wrap_content"  
  10.         android:text="Detect Internet Status" />  
  11.    
  12.     <Button android:id="@+id/btn_check"  
  13.         android:layout_height="wrap_content"  
  14.         android:layout_width="wrap_content"  
  15.         android:text="Check Internet Status"  
  16.         android:layout_centerInParent="true"/>  
  17.    
  18. </RelativeLayout>

MainActivity.java

  1. import android.app.Activity;  
  2. import android.app.AlertDialog;  
  3. import android.content.Context;  
  4. import android.content.DialogInterface;  
  5. import android.os.Bundle;  
  6. import android.view.View;  
  7. import android.widget.Button;  
  8.    
  9. public class AndroidDetectInternetConnectionActivity extends Activity {  
  10.    
  11.     // flag for Internet connection status   
  12.     Boolean isInternetPresent = false;  
  13.    
  14.     // Connection detector class   
  15.     ConnectionDetector cd;  
  16.    
  17.     @Override  
  18.     public void onCreate(Bundle savedInstanceState) {  
  19.         super.onCreate(savedInstanceState);  
  20.         setContentView(R.layout.main);  
  21.    
  22.         Button btnStatus = (Button) findViewById(R.id.btn_check);  
  23.    
  24.         // creating connection detector class instance   
  25.         cd = new ConnectionDetector(getApplicationContext());  
  26.    
  27.         /** 
  28.          * Check Internet status button click event 
  29.          */  
  30.         btnStatus.setOnClickListener(new View.OnClickListener() {  
  31.    
  32.             @Override  
  33.             public void onClick(View v) {  
  34.    
  35.                 // get Internet status   
  36.                 isInternetPresent = cd.isConnectingToInternet();  
  37.    
  38.                 // check for Internet status   
  39.                 if (isInternetPresent) {  
  40.                     // Internet Connection is Present   
  41.                     // make HTTP requests   
  42.                     showAlertDialog(AndroidDetectInternetConnectionActivity.this"Internet Connection",  
  43.                             "You have internet connection"true);  
  44.                 } else {  
  45.                     // Internet connection is not present   
  46.                     // Ask user to connect to Internet   
  47.                     showAlertDialog(AndroidDetectInternetConnectionActivity.this"No Internet Connection",  
  48.                             "You don't have internet connection."false);  
  49.                 }  
  50.             }  
  51.         });  
  52.     }  
  53.    
  54.     /** 
  55.      * Function to display simple Alert Dialog 
  56.      * @param context - application context 
  57.      * @param title - alert dialog title 
  58.      * @param message - alert message 
  59.      * @param status - success/failure (used to set icon) 
  60.      * */  
  61.     public void showAlertDialog(Context context, String title, String message, Boolean status) {  
  62.         AlertDialog alertDialog = new AlertDialog.Builder(context).create();  
  63.    
  64.         // Setting Dialog Title   
  65.         alertDialog.setTitle(title);  
  66.    
  67.         // Setting Dialog Message   
  68.         alertDialog.setMessage(message);  
  69.    
  70.         // Setting alert dialog icon   
  71.         alertDialog.setIcon((status) ? R.drawable.success : R.drawable.fail);  
  72.    
  73.         // Setting OK Button   
  74.         alertDialog.setButton("OK"new DialogInterface.OnClickListener() {  
  75.             public void onClick(DialogInterface dialog, int which) {  
  76.             }  
  77.         });  
  78.    
  79.         // Showing Alert Message   
  80.         alertDialog.show();  
  81.     }  
  82. }

(5)测试结果

Internet Connection

No Internet Connection

相关内容