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

利用广播接收者监听Android系统网络变化

2017-02-17 15:40 507 查看
1.自定义广播接收者

package com.onetoo.www.onetoo.receiver;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.util.Log;

/**
* Created by longShun on 2017/2/17.
* desc 网络相关接收者
*/
public class NetBroadCastReceiver extends BroadcastReceiver {

private static final String TAG = "NetBroadCastReceiver";

@Override
public void onReceive(Context context, Intent intent) {
//如果是在开启wifi连接和有网络状态下
if(ConnectivityManager.CONNECTIVITY_ACTION.equals(intent.getAction())){
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = cm.getActiveNetworkInfo();
if (networkInfo != null && networkInfo.isAvailable()) {
Log.d(TAG, "onReceive:网络打开 ");
//todo...相应处理
}
else {
Log.d(TAG, "onReceive:网络关闭 ");
}
}
}
}


2.代码中动态注册

private NetBroadCastReceiver netBroadCastReceiver;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

//注册网络监听
netBroadCastReceiver = new NetBroadCastReceiver();
IntentFilter intentFiler = new IntentFilter();
//"android.net.conn.CONNECTIVITY_CHANGE"这个是网络变化时系统发出的广播
intentFiler.addAction("android.net.conn.CONNECTIVITY_CHANGE");
registerReceiver(netBroadCastReceiver, intentFiler);

}

@Override
protected void onDestroy() {
super.onDestroy();
//解除注册
unregisterReceiver(netBroadCastReceiver);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  广播接收者