Android的网络状态监听

1、获取当前网络信息

      想要获取当前的网络信息,就得获取ConnectivityManager,调用ConnectivityManager的getActiveNetworkInfo()方法,返回一个NetWorkInfo对象。这个NetWorkInfo对象中的getTypeName()方法,会返回当前的网络类型。"WIFI" or "MOBILE"。

      当然还需要添加权限,android.permission.ACCESS_NETWORK_STATE;

   
 package com.example.wifitest;
     
    import android.support.v7.app.ActionBarActivity;
    import android.widget.TextView;
    import android.net.ConnectivityManager;
    import android.net.NetworkInfo;
    import android.os.Bundle;
     
    public class MainActivity extends ActionBarActivity {
     
       private ConnectivityManager mConnectiviayManager;// 网络管理器
       private NetworkInfo mNetWorkInfo;// 网络信息对象
       private TextView tv_wifi;
    
       @Override
       protected void onCreate(Bundle savedInstanceState) {
           setContentView(R.layout.activity_main);
           // 获取网络管理器
           mConnectiviayManager = (ConnectivityManager) getSystemService(this.CONNECTIVITY_SERVICE);
           // 获取当前网络信息
           mNetWorkInfo = mConnectiviayManager.getActiveNetworkInfo();
           tv_wifi = (TextView) findViewById(R.id.wifi);
           tv_wifi.setText(mNetWorkInfo.getTypeName());
       }
   }

2、设置网络改变的监听

     在Android系统中,当网络状态发生改变的时候,系统就会发出一个广播。我们需要做的事情就是去定义一个广播接收器,去专门接受到这个广播,然后获取当前的网络状态进行一定的判断(提醒用户什么的)。

     从上面我们已经可以知道如何获取当前网络信息了,那我们只要做的就是接受网络改变的广播。

    代码和原理很简单,直接看代码可以看懂:

   
 package com.example.wifitest;
     
    import android.support.v7.app.ActionBarActivity;
    import android.widget.Toast;
    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.os.Bundle;
    
    public class MainActivity extends ActionBarActivity {
     
        private ConnectivityManager mConnectiviayManager;// 网络管理器
        private NetworkInfo mNetWorkInfo;// 网络信息对象
     
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            // 注册广播接收器
            // -----网络状态改变时,发出的广播Action为ConnectivityManager.CONNECTIVITY_ACTION
            // 我们用这个Action去注册广播,进行接收
            IntentFilter intentFilter = new IntentFilter(
                    ConnectivityManager.CONNECTIVITY_ACTION);
            ConnectionChangeReceiver mReceiver = new ConnectionChangeReceiver();
            registerReceiver(mReceiver, intentFilter);
        }
    
        // 定义一个广播接收器
        public class ConnectionChangeReceiver extends BroadcastReceiver {
    
            @Override
            public void onReceive(Context context, Intent intent) {
                // 获取网络管理器
                mConnectiviayManager = (ConnectivityManager) getSystemService(context.CONNECTIVITY_SERVICE);
                // 获取当前网络信息
                mNetWorkInfo = mConnectiviayManager.getActiveNetworkInfo();
                if (null == mNetWorkInfo) {
                    Toast.makeText(MainActivity.this, "已断开网络!", Toast.LENGTH_LONG)
                            .show();
                } else {
                    Toast.makeText(MainActivity.this,
                            "当前的网络状态 :" + mNetWorkInfo.getTypeName(),
                            Toast.LENGTH_LONG).show();
                }
            }
        }
    }

你可能感兴趣的:(Android的网络状态监听)