天天看點

Android 動态監聽手機的網絡狀态

代碼:

import android.app.Activity;

import android.content.BroadcastReceiver;

import android.content.Context;

import android.content.Intent;

import android.content.IntentFilter;

import android.net.ConnectivityManager;

import android.net.NetworkInfo;

import android.view.View;

public class MainActivity extends Activity{

  private View netLayout;

  private ConnectivityManager cm;

      @Override

 protected void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  setContentView(R.layout.main);

  initViews();

  checkNet();  

 }

private void checkNet() {

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

  NetworkInfo info = cm.getActiveNetworkInfo();

  if (info != null && info.isAvailable() && info.isConnected()) {

   //網絡可用

   netLayout.setVisibility(View.GONE);

   MyLog.i(TAG, "網絡已連接配接");

  } else {

   //網絡不可用

   netLayout.setVisibility(View.VISIBLE);

   MyLog.i(TAG, "網絡不可用");

  }

 }

 private void registerBroadcast() {

    //注冊監聽網絡狀态改變的廣播

     IntentFilter netFilter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);

    netFilter.addCategory(Intent.CATEGORY_DEFAULT);

    registerReceiver(netReceive, netFilter);

  }

private BroadcastReceiver netReceive = new BroadcastReceiver() {

  @Override

  public void onReceive(Context context, Intent intent) {

   MyLog.i(TAG, "netReceive");

   if (intent.getAction().equals(ConnectivityManager.CONNECTIVITY_ACTION)) {

    //獲得系統的連接配接管理器,網絡管理器

    //獲得激活的網絡資訊

    NetworkInfo info = cm.getActiveNetworkInfo();

    //目前網絡是否有效

//    boolean available = info.isAvailable();

    //目前網絡是否已連接配接

//    boolean connected = info.isConnected();

    //目前網絡的類型

//    String netType = info.getTypeName();

    if (info != null && info.isAvailable() && info.isConnected()) {

     //網絡是可用的

     netLayout.setVisibility(View.GONE);

    } else {

     //目前網絡不可用

     netLayout.setVisibility(View.VISIBLE);

     MyLog.i(TAG, "網絡不可用");

    }

   }

  }

 };

}

繼續閱讀