Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android網絡判斷知識小結

Android網絡判斷知識小結

編輯:關於Android編程

Android中判斷當前網絡是否可用

應用場景:實現判斷當前網絡是否可用

當前有可用網絡,如下圖:

當前沒有可用網絡,如下圖:

實現步驟:

1、獲取ConnectivityManager對象

Context context = activity.getApplicationContext();
// 獲取手機所有連接管理對象(包括對wi-fi,net等連接的管理)
ConnectivityManager connectivityManager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);

2、獲取NetworkInfo對象

// 獲取NetworkInfo對象
NetworkInfo[] networkInfo = connectivityManager.getAllNetworkInfo();

3、判斷當前網絡狀態是否為連接狀態

if (networkInfo[i].getState() == NetworkInfo.State.CONNECTED)
{
   return true;
}

4、在AndroidManifest.xml中添加訪問當前網絡狀態權限

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>

代碼如下:

public class ClassTestDemoActivity extends Activity
{
  @Override
  public void onCreate(Bundle savedInstanceState)
  {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    if (isNetworkAvailable(ClassTestDemoActivity.this))
    {
      Toast.makeText(getApplicationContext(), "當前有可用網絡!", Toast.LENGTH_LONG).show();
    }
    else
    {
      Toast.makeText(getApplicationContext(), "當前沒有可用網絡!", Toast.LENGTH_LONG).show();
    }
  }
  /**
   * 檢查當前網絡是否可用
   * 
   * @param context
   * @return
   */
  public boolean isNetworkAvailable(Activity activity)
  {
    Context context = activity.getApplicationContext();
    // 獲取手機所有連接管理對象(包括對wi-fi,net等連接的管理)
    ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
    if (connectivityManager == null)
    {
      return false;
    }
    else
    {
      // 獲取NetworkInfo對象
      NetworkInfo[] networkInfo = connectivityManager.getAllNetworkInfo();
      if (networkInfo != null && networkInfo.length > 0)
      {
        for (int i = 0; i < networkInfo.length; i++)
        {
          System.out.println(i + "===狀態===" + networkInfo[i].getState());
          System.out.println(i + "===類型===" + networkInfo[i].getTypeName());
          // 判斷當前網絡狀態是否為連接狀態
          if (networkInfo[i].getState() == NetworkInfo.State.CONNECTED)
          {
            return true;
          }
        }
      }
    }
    return false;
  }
}

 控制台打印出的結果:

Android 關於判斷應用是否有網絡

在Android編程中不少有許多應用需要判斷是否有網絡的問題,現在我就來說說關於網絡的問題吧,源碼如下:

.java

 /**
   * 檢查當前網絡是否可用
   * 
   * @param context
   * @return
   */
  public boolean isNetworkAvailable(Activity activity)
  {
    Context context = activity.getApplicationContext();
    // 獲取手機所有連接管理對象(包括對wi-fi,net等連接的管理)
    ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
    if (connectivityManager == null)
    {
      return false;
    }
    else
    {
      // 獲取NetworkInfo對象
      NetworkInfo[] networkInfo = connectivityManager.getAllNetworkInfo();
      if (networkInfo != null && networkInfo.length > 0)
      {
        for (int i = 0; i < networkInfo.length; i++)
        {
          System.out.println(i + "===狀態===" + networkInfo[i].getState());
          System.out.println(i + "===類型===" + networkInfo[i].getTypeName());
          // 判斷當前網絡狀態是否為連接狀態
          if (networkInfo[i].getState() == NetworkInfo.State.CONNECTED)
          {
            return true;
          }
        }
      }
    }
    return false;
  }

在oncreate()方法中判斷這個方法,具體代碼如下:

.java

@Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);  
    setContentView(R.layout.activity_main);
    if(isNetworkAvailable(Maintivity.this){
 Toast.makeText(this, "當前有可用網絡!", Toast.LENGTH_LONG).show();
 }else{
 Toast.makeText(this,"當前沒有網絡!",Toast.LENGTH_LONG).show();}
 }

 另外,還需要添加權限

<!-- 允許應用可以聯網 -->
  <uses-permission android:name="android.permission.INTERNET" />
   <!--允許應用檢查網絡狀況 -->
 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved