Android的网络状态监听

来源:互联网 发布:网络装修 知乎 编辑:程序博客网 时间:2024/06/10 05:11

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();                }            }        }    }

0 0
原创粉丝点击