您的位置:首页 > 理论基础 > 计算机网络

Android的网络状态监听

2015-02-06 15:34 211 查看
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();
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: