//这是一个网络监听的工具类
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
/**
* User:Bick
* Created by Administrator-10-24 15 : 30
*/
public class NetworkConnectivityUtils {
public void GetNetWorkConnectivity(Context context, MyConnectivityReceiver receiver) {
//过滤器
IntentFilter filter = new IntentFilter();
filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION); //添加意图Action网络意图
context.registerReceiver(receiver, filter);//这句话很重要 注册 register广播receiver
}
public static class MyConnectivityReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
ConnectivityManager connMag = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo wifi = connMag.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
NetworkInfo mobile = connMag.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
if (!wifi.isConnected() && !mobile.isConnected()) {
//没网络 获取数据库
networkM.NoNetWork();
}else if(mobile.isConnected()){
networkM.mobileNetWork();
} else {
//有网络 走请求
//请求数据
networkM.haveNetWork();
}
}
private NetworkM networkM;
public void setNetworkM(NetworkM networkM){
this.networkM=networkM;
}
public interface NetworkM{
void haveNetWork();
void NoNetWork();
void mobileNetWork();
}
}
}
// 在Activity中需要判断的地方调用
//实例化工具类
NetworkConnectivityUtils utils=new NetworkConnectivityUtils();
//实例化网络广播监听
NetworkConnectivityUtils.MyConnectivityReceiver receiver= new NetworkConnectivityUtils.MyConnectivityReceiver();
//调用初始化 注册广播的方法
utils.GetNetWorkConnectivity(this,receiver);
//广播的回调方法
receiver.setNetworkM(new NetworkConnectivityUtils.MyConnectivityReceiver.NetworkM() {
@Override
public void haveNetWork() {
Toast.makeText(MainActivity.this,"网络一切正常",Toast.LENGTH_SHORT).show();
}
@Override
public void NoNetWork() {
Toast.makeText(MainActivity.this, "网络已经断开,请检查网络", Toast.LENGTH_LONG).show();
}
@Override
public void mobileNetWork() {
Toast.makeText(MainActivity.this, "移动网已连接", Toast.LENGTH_LONG).show();
}
});
别忘了加联网权限
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>