天天看点

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, "网络不可用");

    }

   }

  }

 };

}