添加网络权限
<uses-permission android:name="android.permission.INTERNET"/>
public class NetUtil {
/**
* 无网络
*/
public static final int NETWORK_NONE = -1;
/**
* 移动网络
*/
public static final int NETWORK_MOBILE = 0;
/**
* WIFI
*/
public static final int NETWORK_WIFI = 1;
public static final int NETWORK_ETHERNET = 2;
/**
* 获取当前网络状态
* @param context
* @return
*/
public static int getNetworkState(Context context){
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo info = connectivityManager.getActiveNetworkInfo();
if (info != null && info.isConnected()){
if (info.getType() == ConnectivityManager.TYPE_MOBILE){
return NETWORK_MOBILE;
}else if (info.getType() == ConnectivityManager.TYPE_WIFI){
return NETWORK_WIFI;
}else if (info.getType() == ConnectivityManager.TYPE_ETHERNET){
return NETWORK_ETHERNET;
}
}else{
return NETWORK_NONE;
}
return NETWORK_NONE;
}
}
public class NetChangeReceiver extends BroadcastReceiver {
private static final String TAG = "NetChangeReceiver";
private final NetWorkListener mListener;
public NetChangeReceiver(NetWorkListener listener) {
mListener = listener;
}
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction() != null && intent.getAction().equals(ConnectivityManager.CONNECTIVITY_ACTION)){
int netWorkState = NetUtil.getNetworkState(context);
Log.d(TAG, "oinReceive: 网络状态有变化," + netWorkState);
if (mListener != null){
mListener.onNetWorkChange(netWorkState);
}
}
}
public interface NetWorkListener {
void onNetWorkChange(int state);
}
}
public class MainActivity extends AppCompatActivity implements NetChangeReceiver.NetWorkListener{
private NetChangeReceiver mReceiver = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initReceiver();
}
private void initReceiver() {
mReceiver = new NetChangeReceiver(this);
IntentFilter filter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
registerReceiver(mReceiver, filter);
}
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(mReceiver);
}
@Override
public void onNetWorkChange(int state) {
if (state >= NetUtil.NETWORK_MOBILE) {
//有网操作
} else {
//无网操作
}
}
}