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

Android开发中对于适时进行网络状态的获取

2017-05-10 20:27 351 查看
Android开发中对于适时进行网络状态的获取

ps:这是我的第一次博客之旅,对于很多不足之处还望包容,谢谢各位亲们的理解。

在Android开发中涉及到网络访问时,时常需要进行网络状态的检查,一般可以通过ConnectivityManager来完成该工作。

适时监听网络变化功能的步骤:

1.定义一个Receiver重写其中的onReceive方法,在其中完成所需要的功能

public class NetworkReceiver extends BroadcastReceiver{

@Override
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equals(ConnectivityManager.CONNECTIVITY_ACTION)){
ConnectivityManager manager =
(ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = manager.getActiveNetworkInfo();
int type = -1;
if(networkInfo != null && networkInfo.isAvailable()){
type = networkInfo.getType();
onNetworkChange(type);
}
}
}
}
public void onNetworkChange(int type) {
switch (type) {
case ConnectivityManager.TYPE_WIFI:
Toast.makeText(this, "TYPE_WIFI", 0).show();
break;
case ConnectivityManager.TYPE_MOBILE:
Toast.makeText(this, "TYPE_MOBILE", 0).show();
break;
case ConnectivityManager.TYPE_ETHERNET:
Toast.makeText(this, "TYPE_ETHERNET", 0).show();
break;
default:
Toast.makeText(this, "TYPE_NONE", 0).show();
break;
}
}


2.在适当的地方注册Receiver,可以在程序中注册,在onCreate中调用如下函数即可:

private void registerReceiver() {

NetworkReceiver receiver = new NetworkReceiver();

IntentFilter filter = new IntentFilter();

filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);

registerReceiver(receiver, filter );

}

3、在适当时取消注册Receiver,可以在程序中取消,在onDestroye中调用如下函数即可:

private void unregisterReceiver() {

if(receiver != null){

unregisterReceiver(receiver);

}

}

4、记得添加访问网络需要的权限
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: