歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android:檢查網絡連接狀態

Android:檢查網絡連接狀態

日期:2017/3/1 10:14:22   编辑:Linux編程

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

訪問網絡我們需要 INTERNET 權限
檢查網絡狀態我們需要 ACCESS_NETWORK_STATE 權限

  1. <!-- Internet Permissions -->
  2. <uses-permission android:name="android.permission.INTERNET" />
  3. <!-- Network State Permissions -->
  4. <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. public class ConnectionDetector {
  5. private Context _context;
  6. public ConnectionDetector(Context context){
  7. this._context = context;
  8. }
  9. /**
  10. * 判斷網絡是否連接
  11. * @return true/false
  12. */
  13. public boolean isConnectingToInternet(){
  14. ConnectivityManager connectivity = (ConnectivityManager) _context.getSystemService(Context.CONNECTIVITY_SERVICE);
  15. if (connectivity != null)
  16. {
  17. NetworkInfo[] info = connectivity.getAllNetworkInfo();
  18. if (info != null) {
  19. for (int i = 0; i < info.length; i++) {
  20. if (info[i].getState() == NetworkInfo.State.CONNECTED) {
  21. return true;
  22. }
  23. }
  24. }
  25. }
  26. return false;
  27. }
  28. }

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

(5)測試結果

Internet Connection

No Internet Connection

Copyright © Linux教程網 All Rights Reserved